Java GridBagConstraints.gridheight不';我不能正常工作
我将Java GridBagConstraints.gridheight不';我不能正常工作,java,swing,gridbaglayout,Java,Swing,Gridbaglayout,我将JFrame实例的布局设置为newgridbaglayout()。我想在布局中添加JTable,但gridheight属性似乎无法正常工作: JFrame frame = new JFrame("GUI Test"); JTable tblTestTable = new JTable(new Object[][] { {"Bar", "Foo"} }, new Object[] { "Foo", "Bar" }); GridBagConstraints c = new GridBagCo
JFrame
实例的布局设置为newgridbaglayout()
。我想在布局中添加JTable
,但gridheight
属性似乎无法正常工作:
JFrame frame = new JFrame("GUI Test");
JTable tblTestTable = new JTable(new Object[][] { {"Bar", "Foo"} }, new Object[] { "Foo", "Bar" });
GridBagConstraints c = new GridBagConstraints() {{
anchor = GridBagConstraints.WEST;
insets = new Insets(2, 5, 2, 5);
weightx = 1;
weighty = 1;
}};
c.fill = GridBagConstraints.BOTH;
c.gridx = 2;
c.gridy = 0;
c.gridheight = 3; // Doesn't work
frame.add(tblTestTable, c);
frame.pack();
frame.setVisible(true);
这是我的一小段代码。布局管理器将
tblTestTable
呈现为一个只有一行的元素,即使我将gridheight
设置为3
。我读到一些关于gridheight
不起作用的信息,如果gridx
大于0
,但我找不到解决方法。是否已经有一个技巧可以绕过此问题?请确保使用刚刚构建的约束作为方法add()
的参数,以便应用约束,如中所示
frame.add(tblTestTable, c);
(thx user432)该代码不使用任何
GridLayout
或GridBagConstraints
。无论如何,您只需向布局中添加一个元素,因此实际上,您的网格是1x1。1x1网格上的gridheight=3意味着什么?gridheight/width是指组件在网格中的单元数。这会影响不同组件的相对位置和大小,对于单个组件而言,这没有任何意义。否。还有更多的元素,但我没有在这里展示它们,因为代码有点长。这是一个3x3的网格,表格位于(3 | 0)中。如果我添加c
作为第二个参数,它仍然不能正常工作并显示为1x1表格。那么,代码中有一个错误,我们没有看到。确保单元格(2,0)至(2,2)为空。这些单元格为空。我在(0,0)和(0,1)中有两个JLabel
s,在(1,0)和(1,1)中有两个JTextField
s,还有一个JButton
从(0,2)到(1,2)。(2,0)到(2,2)为空。我应该发布全部代码吗?现在可以了。事实上,(1,1)中的JTextField
宽度为2个字段。很抱歉犯了这个错误,但谢谢:)无论如何,请将gridwith
和gridheight
视为HTML表中的colspan和rowspan属性。它们只有在应用于包含许多元素的网格时才有意义,并显示它们占用了您告诉它们的行和列。当然,这必须应用于网格中的所有元素(使用它们自己的约束)。