我只想要一个 GridLayout 来合并单元格。所以我找到了 GridBagLayout。看起来这种布局非常灵活。我不需要这种灵活性。有没有办法告诉 GridBagLayout 它应该在整个宽度和高度上使用 20 列和 10 行?它应该看起来像一个 GridLayout,但具有合并单元格。
谢谢
我只想要一个 GridLayout 来合并单元格。所以我找到了 GridBagLayout。看起来这种布局非常灵活。我不需要这种灵活性。有没有办法告诉 GridBagLayout 它应该在整个宽度和高度上使用 20 列和 10 行?它应该看起来像一个 GridLayout,但具有合并单元格。
谢谢
据我所知,您可以将相同的高度和宽度用于多个JComponent
. 但是你必须改变它们,你想要一个合并的单元格。
protected void makebutton(String name,
GridBagLayout gridbag,
GridBagConstraints c) {
Button button = new Button(name);
gridbag.setConstraints(button, c);
add(button);
}
public void init() {
GridBagLayout gridbag = new GridBagLayout();
GridBagConstraints c = new GridBagConstraints();
setFont(new Font("SansSerif", Font.PLAIN, 14));
setLayout(gridbag);
c.fill = GridBagConstraints.BOTH;
c.weightx = 1.0;
makebutton("Button1", gridbag, c);
makebutton("Button2", gridbag, c);
makebutton("Button3", gridbag, c);
c.gridwidth = GridBagConstraints.REMAINDER; //end row
makebutton("Button4", gridbag, c);
c.weightx = 0.0; //reset to the default
makebutton("Button5", gridbag, c); //another row
.........
}
所以你不需要一直指定高度和宽度。
我希望这是可能的,因为它会使我的项目更容易。然而,这就是答案:
GridBagLayout 没有提供明确定义网格中的行数或列数的方法,也没有定义网格中每个单元格大小的方法。相反,GridBagLayout 通过放置在屏幕上的组件数来计算网格中的行数和列数。如果一个容器有五个水平排列的组件,则网格由五列和一行组成。如果容器有五个垂直排列的组件,那么网格由一列和五行组成。
我从:http ://www2.sys-con.com/itsg/virtualcd/java/archives/0304/tabbone/index.html
对于我的项目,我正在考虑创建我的 GridBagLayout 的顶行和左列,其中 x 和 y 数量为 1 像素 x 1 像素透明面板,以手动创建类似 excel 的网格并将对象放入该网格结构中,使用 gridwidth和 gridheight 根据需要合并单元格。这应该让我可以轻松地创建复杂的布局并正确调整所有内容(敲木头)。