Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么JList和TextArea组件不使用GridBagLayout调整大小?_Java_Swing_Layout Manager_Gridbaglayout - Fatal编程技术网

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

Java 为什么JList和TextArea组件不使用GridBagLayout调整大小?,java,swing,layout-manager,gridbaglayout,Java,Swing,Layout Manager,Gridbaglayout,我想让JList和JTextArea随窗口调整大小,但JPanel保持在中间。您的LogView类扩展了JPanel,因此除非您更改它,否则它将使用JPanel的默认布局FlowLayout。使用容器的FlowLayout中保存的组件在容器更改大小时不会更改大小,因此,如果您想要此行为,您不需要组件侦听器——您只需要将LogView JPanel的布局管理器更改为BorderLayout或类似的允许其保存的组件扩展的东西,就是这样。一行代码: public LogView(final JFram


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

您的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对象