java - GridBagLayout ipadY 和定位

标签 java swing gridbaglayout

我有一个 JFrame,它在窗口的左上角添加一个 Pane 。效果很好。由于某种原因,组成左上角 Pane 的 gridbaglayout 的行为并不完全像我想要的那样。

我添加的前三个按钮位于第一个 y 行内并水平添加,但我添加到 gridY = 1 的 informationPane 不会转到下一行,它只是像按钮一样添加到右侧。

此外,我必须在每个按钮上设置首选大小,因为 iPadY 不会垂直扩展按钮。

private JPanel setUpTop()
{
    JPanel pane = new JPanel();
    pane.setLayout(new GridLayout(1, 2));

    JPanel controlPane = new JPanel();
    pane.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();


    controlPane.setBackground(Color.RED);

    c.gridx = 0;
    c.gridy = 0;
    previousSongBT = new JButton("<<");
    previousSongBT.setPreferredSize(new Dimension(CTRL_BT_WIDTH, CTRL_BT_HEIGHT));
    controlPane.add(previousSongBT, c);


    c.gridx = 1;
    c.gridy = 0;
    playBT = new JButton(">");
    playBT.setPreferredSize(new Dimension(CTRL_BT_WIDTH, CTRL_BT_HEIGHT));
    controlPane.add(playBT, c);


    c.gridx = 2;
    c.gridy = 0;
    nextSongBT = new JButton(">>");
    nextSongBT.setPreferredSize(new Dimension(CTRL_BT_WIDTH, CTRL_BT_HEIGHT));
    controlPane.add(nextSongBT, c);

    c.gridx = 0;
    c.gridy = 1;
    c.weighty = 1;
    c.gridwidth = 3;
    c.anchor = GridBagConstraints.PAGE_END;
    JPanel informationPane = new JPanel(); 
    informationPane.add(new JButton("Bottom pane"));
    informationPane.setBackground(Color.GREEN);
    controlPane.add(informationPane, c);

    pane.add(controlPane);
    return pane;
}

这是添加该 Pane 的代码:

//Top-Left
    c.anchor = GridBagConstraints.FIRST_LINE_START;
    c.insets = new Insets(20,20,0,0);  //top padding

    c.gridx = 0;
    c.gridy = 0;
    c.weightx = 1;
    c.weighty = 0.5;
    this.getContentPane().add(setUpTop(), c);

为了更清晰起见,这是一张图片,我希望绿色面板位于其他三个按钮下方:

enter image description here

最佳答案

而不是

JPanel controlPane = new JPanel();
pane.setLayout(new GridBagLayout());

应该是这样的

JPanel controlPane = new JPanel();
controlPane.setLayout(new GridBagLayout());

不应该吗?

关于java - GridBagLayout ipadY 和定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12990257/

相关文章:

java - 如何使用这两个线程和A类和B类的对象来创建死锁?

java - 我在 eclipse 中为 spring mvc web 应用程序选择什么项目类型?

java - JTable 中的 JPanel 获得鼠标单击的焦点,但鼠标悬停时不获得焦点

java - 跳过一行 GridBagLayout

Java - Try/Catch 未移过去 InputMismatchException

java - 显示 30px 高的 JPanel,然后用 Minecraft 填充其余空间

java - 在 Java Swing 中,为什么这个字体大小不正确?

java - Swing 动态(自动)适配布局

java - 如何向 GridBagLayout 添加空单元格?

java - 我可以在 Rhino 中将 Javascript 数组作为通用集合传递吗?