JFrame使用GridBagLayout安排按钮

时间:2013-12-25 12:35:36

标签: java swing layout jbutton layout-manager

以下是示例:

    help = new JButton("Help");
    setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    c.gridx = 50;
    c.gridy = 50;
    add(help,c);

我可能理解这个错误(我从youtube上的一些教程中得到了这个概念),我似乎无法将“帮助”按钮放到需要它的位置。无论我将gridxgridy更改为什么,按钮始终位于中间。如果这部分代码还不够,请告诉我,我可以发布整个内容,但我认为这应该足够了。

2 个答案:

答案 0 :(得分:3)

让我解释一下GridbagLayout(大大简化)。

想想棋盘,你有8列8行= 64个单元格。在每个单元格中,您可以放置​​一个ui元素,就像按钮一样。现在,如果您设置gridx = 3和gridy = 1,则会将按钮放在棋盘上第4行的第2列。

事情是:与棋盘不同,你的细胞不具有相同的高度或宽度。如果在第3列中放置一个大元素,则整个列将更大。如果第一列中没有元素(就像在这种情况下那样),它的宽度将为0.所以你可以将gridx设置为50或者其他任何东西,如果之前的所有列都不包含元素,那么你的按钮仍然是第一个元素在左侧

尝试c.anchor = GridBagConstraints.CENTER;

答案 1 :(得分:-2)

上面的代码真的不足以查看正在发生的事情。如果您正在使用Eclipse IDE,我建议您使用GUI安装WindowBuilder插件来修复您的布局。它更容易:)