【问题标题】:Java Swing, making a gridlayout fill parent?Java Swing,制作网格布局填充父级?
【发布时间】:2014-01-17 21:06:55
【问题描述】:

我最近才开始使用 Swing 为程序创建 GUI,到目前为止,玩弄它是非常有趣的。但是,我遇到了布局设置为 gridLayout 的 JPanel 的问题。现在它看起来像这样:

右侧的网格是一个设置为 GridLayout 的 JPanel,每个单元格都是一个带边框的 JLabel。左侧的选项也在 JPanel 内部,左侧 JPanel 和右侧 JPanel 嵌套在 JFrame 上设置的 GridBagLayout 中。

本质上,我的问题是我想“缩放”右侧的网格,以便每个单元格都有一定的高度和宽度。网格本身将具有可变数量的行和列,它们是在程序首次启动时设置的。最终,我计划在 JScrollPane 中使用正确的 JPanel(如果那样的话......),所以我并不真正关心是否所有的网格都显示在屏幕上。

我尝试将 gridLayout 的填充值设置为“BOTH”,结果如下:

这更接近我的意图,但我希望 JLabel 中的实际 ImageIcon 填充整个 JLabel。此外,我希望 JLabels 具有相同的高度和宽度。但是,我不知道该怎么做。我已经搞砸了一段时间了,我不确定我是否对 Swing 过于陌生,或者我是否遗漏了文档中的某些内容。 最后,我希望网格单元格具有固定的高度和宽度,无论单元格的数量是多少,无论它是离开屏幕还是不填充它。

(另外,我只是想,编写此代码然后将其推入 JScrollPane 并期望它执行相同的操作可能不是最好的主意......我想我会看看会发生什么。)

【问题讨论】:

  • 如果在面板中使用 BoxLayout 来拉伸内容,它们会。或者,您可以使用另一个具有框布局的 JPanel,并用它包装您现有的面板。编辑 - 如果他们没有设置最大/首选大小,他们将填充他们的父母。
  • 让 I ageIcon “填充”可用空间无法实现开箱即用,因为 JLabel 不会缩放图像。您可以覆盖“单元格”组件的 getPreferredSize 并返回您需要的值
  • 感谢您的快速回复,我正在调查您的两个回复。马克,你是说我应该为每一行使用一个盒子布局,并在该盒子布局中拥有该特定行的单元格,等等?我无法想象如何将网格容纳到 BoxLayout 中。还有 MadProgrammer,你的建议让我觉得我可能对摇摆不太舒服,无法完成这项工作。
  • 我认为你应该听从 MadProgrammers 的建议,他比我更了解你的问题,并且鉴于他的代表和挥杆经验,很可能有你想要的解决方案。
  • 好的,是的,我正在调查。谢谢你的建议,马克!我真的很感激。

标签: java swing user-interface scaling


【解决方案1】:

但我希望 JLabel 中的实际 ImageIcon 填充整个 JLabel。

查看 Darryl 的 Stretch Icon,这将允许图标调整大小以归档可用于 JLabel 的空间。

【讨论】:

  • 这太棒了,经过测试,它可以完美地缩放 ImageIcon。但是,当面板中的单元格过多时,单元格本身仍然会倾斜。但希望在我将网格放入 JScrollPane 后,该问题将得到解决。感谢您发布此信息!
猜你喜欢
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2015-05-14
  • 1970-01-01
  • 2021-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多