我有一个具有以下布局和组件的 JFrame
:
_________________________________________
| __________________________________ |
| |JTree | Panel2 | * |
| |(Panel1)| (other controls) |<-> |
| |________|_______________________| |
|__________*_____________________________|
这些位于主 JFrame
的内容 Pane 中。
我想要的是当我最大化窗口时,这些组件相应地调整大小。
现在发生的是它们保持当前大小,并且在我有箭头和星星的地方有一个巨大的差距。(侧面和底部)。
我想保持包装。
我对内容 Pane 使用了空布局,并从可视化设计器中删除了组件。
如何使控件始终在 mazimize 时调整大小?
最佳答案
如果您希望两个面板具有相同的大小,每个面板占据主窗口的一半,请使用 GridLayout:
getContentPane().setLayout(new GridLayout(1,2));
getContentPane().add(Panel1);
getContentPane().add(Panel2);
如果您希望一个面板具有恒定宽度,请使用 BorderLayout:
getContentPane().setLayout(new BorderLayout());
getContentPane().add(Panel1,BorderLayout.EAST);
getContentPane().add(Panel2,BorderLayout.CENTER);
如果你想要更复杂的行为,例如要保持 1:2 的宽度比例,您将不得不使用 GridBagLayout,这是最强大但也是最复杂的布局:
getContentPane().setLayout(new GridBagLayout());
getContentPane().add(Panel1,new GridBagConstaints(0,0,1,1,1,1,GridBagConstraints.CENTER,GridBagLayout.BOTH,new Insets(0,0,0,0),0,0);
getContentPane().add(Panel2,new GridBagConstaints(1,0,1,1,2,1,GridBagConstraints.CENTER,GridBagLayout.BOTH,new Insets(0,0,0,0),0,0);
关于java - 关于最大化调整大小控件的 Swing 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5529919/