为什么JList和TextArea组件不使用GridBagLayout调整大小?

时间:2012-02-09 01:10:39

标签: java swing layout-manager gridbaglayout

http://pastebin.com/VaaTRsuf

我想让JList和JTextArea在窗口中调整大小,但JPanel保持在中心位置。

1 个答案:

答案 0 :(得分:2)

您的LogView类扩展了JPanel,因此除非您更改它,否则它使用JPanel的默认布局FlowLayout。当容器更改大小时,FlowLayout使用容器中保存的组件不会更改大小,因此如果您需要此行为,则不需要组件侦听器 - 您只需将LogView JPanel的布局管理器更改为BorderLayout或类似的东西允许其持有的组件扩展,就是这样。一行代码:

public LogView(final JFrame contentPane) {

  // .......

  setLayout(new BorderLayout());  // add this, that's it
  add(mainPanel);
}

另一种选择是摆脱mainPanel,因为它看起来根本不需要,将LogView对象的布局设置为GridBagLayout,并将组件直接添加到LogView对象。