Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java GridBagConstraints.gridheight不';我不能正常工作_Java_Swing_Gridbaglayout - Fatal编程技术网

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属性。它们只有在应用于包含许多元素的网格时才有意义,并显示它们占用了您告诉它们的行和列。当然,这必须应用于网格中的所有元素(使用它们自己的约束)。