我有这种格式的代码,但jpanels没有按我设置的大小监听。当我运行代码时,所有三个面板都具有相同的大小。有没有办法调整它们?
JPanel mainpanel = new JPanel(mainPanel,BoxLayout.Y_AXIS);
JPanel tablepanel1 = new JPanel();
tablepanel1.setSize(900,400);
JPanel selectionpanel = new JPanel(new GridBagLayout());
selectionpanel.setSize(900,100);
JPanel tablepanel2 = new JPanel();
tablepanel2.setSize(900,400);
mainpanel.add(tablepanel1);
mainpanel.add(selectionpanel);
mainpanel.add(tablepanel2);
frame.add(mainpanel);
frame.setSize(900,900);
答案 0 :(得分:1)
您是否要将BoxLayout
用于mainpanel
?:
JPanel mainpanel = new JPanel();
mainpanel.setLayout(new BoxLayout(mainpanel, BoxLayout.Y_AXIS));
此布局管理器仅侦听首选大小而不是组件大小。最好的方法是覆盖getPreferredSize
:
JPanel selectionpanel = new JPanel() {
@Override
public Dimension getPreferredSize() {
return new Dimension(900, 400);
}
};
最好使用JFrame#pack
而不是设置框架的尺寸。