首页 文章

将GridLayout JPanel放置到GridBagLayout JFrame上

提问于
浏览
0

我正在尝试使用GridBagLayout将两个JPanel放到JFrame上 . 第一个JPanel使用gridLayout创建35列和27行JButton,宽度应为JFrame的3/4 . 该面板需要填充可用的垂直空间 . 第二个JPanel也使用gridLayout,并应填充主JFrame的最后1/4 .

不幸的是,我的第一个JPanel(sPan)甚至没有在屏幕上正确安装,并且迫使整个第二个JPanel(cPan)离开屏幕 . 如何约束这些值,使其只占用屏幕上允许的比例,而不会相互移动?

如果我使用带有背景颜色的空白JPanel和我的代码,一切都很好:

Blank JPanel proportions http://i61.tinypic.com/1o7yo5.png [1]

但是,当我使用由JButton组成的JPanel时,比例会完全混乱:

JButtons JPanel proportions http://i58.tinypic.com/34td1r9.png [2]

我推测当我实例化我的sPan对象时,它会调整每个按钮的大小以适应整个JFrame的大小 . 然后,当我实例化cPan对象并尝试将其放在sPan对象旁边时,按钮不会调整自身大小以适应主JFrame中的其他面板 . 有谁知道我怎么解决这个问题?

我必须使用GridBagLayout进行此分配,因此使用普通的gridLayout不是一个选项 . 有关正在发生的事情的任何提示将不胜感激 .

1 回答

  • 1

    你能简单地处理 two columns 吗?第一个 taking 5/6 of the available width 和第二个 the 1/6th remaining

    您可以尝试以下方法:

    final JPanel sPan = new JPanel();
    sPan.setBackground(Color.RED);
    constraints.fill = GridBagConstraints.BOTH;
    constraints.weightx = 5 / 6f;  // change this value...
    constraints.weighty = 1.00;
    add(sPan, constraints);
    
    final JPanel cPan = new JPanel();
    cPan.setBackground(Color.BLUE);
    constraints.fill = GridBagConstraints.BOTH;
    constraints.weightx = 1 / 6f;  // ... and this one.
    constraints.weighty = 1.00;
    add(cPan, constraints);
    

    请注意:我用 background color 替换了你的 JPanels ,所以即使这样,你也可以看到发生了什么 .

相关问题