Swing JTable Hack

时间:2011-08-24 14:32:17

标签: java swing netbeans jtable gui-builder

我有一个相当复杂的JTable子类(WidgetTable及其WidgetTableModel),当我将它添加到虚拟JPanel进行测试时,它可以正常工作。

由于我在使用LayoutManagers时绝对是 horrid ,我喜欢使用NetBeans内置的GUI Builder来完成所有布局工作。然后我通常只是代码自动生成(GUI构建器)代码,这一直对我有用。这是两个世界中最好的:我的演示文稿看起来完全按照我想要的方式,我也可以对组件进行细致的控制。

然而,我从未使用GUI Builder工具制作表格。在昨晚修补了一段时间之后,它看起来好像只能制作非常基本的(固定行数,固定#列等)JTables。

我的WidgetTable实际上有行数和列数的动态数字,特殊编辑/渲染器以及许多其他铃声和口哨声。

我的问题:

我有两个相互矛盾的约束:(1)我需要使用GUI构建器将表定位并调整到容器中我想要的位置,但是,(2)表组件可用通过GUI构建器太基本无法处理我的WidgetTable

我需要一种方法使用GUI构建器将“表占位符”设计到我的容器中,这样,一旦NetBeans自动生成该占位符代码,我就会调整代码并指示它动态实例化我的WidgetTables之一相反,消耗我定义占位符组件的位置和大小。

这样我可以吃蛋糕,也可以吃。唯一的问题是,我认为GUI构建器不支持拖放抽象JComponents,定位和调整它们的能力,然后在代码库的其他地方将子类插入其中。

之前有人遇到此问题或有任何有趣的建议吗?我想最好的办法就是让我卷起袖子学习LayoutManagers,但我主要是服务器端的开发人员,每次只能在蓝色的月亮来到客户端;老实说,没有精力学习GroupLayout及其阴险堂兄的错综复杂和肮脏。

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

使用GUI构建器插入JTable,将其model属性重置为默认值,并调整构造代码,使其看起来像

jTable1 = new WidgetTable(this.widgetTableModel);

您可以通过右键单击JTable,选择“自定义代码”,在第一个组合框中选择“自定义创建”而不是“默认代码”,然后键入构造函数调用的代码来调整创建代码。 / p>

如果您需要将jTable1变量设为WidgetTable而不是JTable,请在同一对话框中编辑“变量声明代码”。

答案 1 :(得分:1)

NetBeans还允许您创建用于构建UI的自定义组件。这可能比你想要放入WidgetTable要多得多,但如果你认为你将不得不用自定义组件构建更多的UI,那么值得学习。

答案 2 :(得分:0)

我一直这样做。我有一个与GUI编辑器一起使用的子类JTable,它是动态的。

  1. 使用GUI编辑器和您选择的布局将JTable添加到项目中。
  2. 添加表格后,右键单击该表格并单击自定义代码。
  3. 在JTable的构造函数中,将其更改为new WidgetTable(new WidgetModel())而不是new JTable(new DefaultTableModel())
  4. 为您创建一个全局变量WidgetTable。像private WidgetTable widgetTable;
  5. 之类的东西
  6. 在构造函数中,在调用initComponents()之后,将JTable转换为Widget表并从现在开始使用它。 `widgetTable =(WidgetTable)jTable1;
相关问题