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

标签 java swing layout-manager gridbaglayout

http://pastebin.com/VaaTRsuf

我想让 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 对象。

关于java - 为什么 JList 和 TextArea 组件不使用 GridBagLayout 调整大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204124/

相关文章:

java - 在另一个 Web View 控件中打开超链接

java JFrame setContentPanel 然后 JPanel 消失

java - 将面板内容与面板顶部对齐

java - 在面板中添加一个复杂的图像,在一个自定义的用户界面中周围有按钮

java - 从 JavaScript 检索数据的简单方法

Java 有界类型参数

java - 在输入字段中按 Enter 时关闭自定义对话框

java - 在 BorderLayout 中向 NORTH 组件添加垂直间距

java - 在我们的项目中哪里添加log4j配置文件?

java - 将 javaagent 添加到进程 ID 或 JVM 启动