【发布时间】:2012-10-27 11:06:57
【问题描述】:
我创建了一个 JFrame 并将一个 JPanel 设置为其内容面板,我在该容器中添加了大约 30 个按钮,但 JFrame 向我显示了一行按钮,它不允许我扩展高度。
public class UIDemo{
private JPanel contentPanel = new JPanel();
private JButton buttons[] = new JButton[30];
public UIDemo(JFrame frame){
for(int i = 0; i < buttons.length; i++){
buttons[i] = new JButton("Button"+Integer.toString(i));
contentPanel.add(buttons[i]);
}//Add all buttons into content panel.
frame.setContentPane(contentPanel);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
public void run(){
new UIDemo(new JFrame());
}
});
}
}
【问题讨论】:
-
JPanel的默认布局是FlowLayout,它将显示您描述的行为。 -
为什么flowLayout不能扩展内容的高度?
-
第一。尝试手动将窗口大小拖动到其他尺寸。让它更薄更高。看看会发生什么。
-
实际上我可以将窗口的大小拖得更高,然后我可以看到按钮的波纹线。但是我想框架的大小会自动显示所有按钮行而不是仅一行按钮。
-
好的——我的意思是
FlowLayout会很高兴地把组件放在下一个旁边,只要父容器可以变得更宽。它从不“尝试”使父容器更高,而是向父容器建议(当被问到时)它的首选宽度和高度是多少。该大小将基于单行组件。
标签: java swing height layout-manager pack