Java Swing,制作gridlayout填充父级?

Java Swing,制作gridlayout填充父级?,java,swing,user-interface,scaling,Java,Swing,User Interface,Scaling,我最近刚开始使用Swing为程序创建GUI,到目前为止,这是一件非常有趣的事情。但是,我对布局设置为gridLayout的JPanel有一个问题。现在看起来是这样的: 右侧的网格是一个设置为GridLayout的JPanel,每个单元格都是一个带边框的JLabel。左侧的选项也在JPanel中,左侧JPanel和右侧JPanel嵌套在JFrame上的GridBagLayout集合中 本质上,我的问题是我想“缩放”右边的网格,这样每个单元格都有一定的高度和宽度。网格本身将具有可变数量的行和列,这

我最近刚开始使用Swing为程序创建GUI,到目前为止,这是一件非常有趣的事情。但是,我对布局设置为gridLayout的JPanel有一个问题。现在看起来是这样的:

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

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

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

这更接近我的意图,但我希望JLabel中的实际图像图标填充整个JLabel。此外,我希望JLabel具有相同的高度和宽度。然而,我不知道该怎么做。我已经在这里混了一段时间了,我不确定我是不是太喜欢Swing,或者我在文档中遗漏了什么。 最后,我希望网格单元格的高度和宽度是固定的,不管单元格的数量是多少,也不管它是否在屏幕外显示或没有填充

(另外,我只是想,也许编写这个代码,然后稍后将其放入JScrollPane并期望它执行相同的操作不是最好的主意……我想我会看看会发生什么。)

但我希望JLabel中的实际图像图标填充整个JLabel


查看Darryl's,它将允许图标调整大小以归档JLabel的可用空间。

如果在面板中使用BoxLayout,您希望将内容拉伸到其中,则它们会。或者,您可以使用另一个带有方框布局的JPanel,并用它包装现有面板。编辑-如果没有设置最大/首选大小,他们将填充其父级。使用I AGE图标“填充”可用空间是不可能的,因为JLabel不会缩放图像。您可以覆盖“cell”组件的getPreferredSize并返回所需的值感谢您的快速回复,我正在查看您的两个回复。马克,你是说我应该为每一行使用方框布局,并在方框布局中包含该行的单元格,等等?我很难想象如何将网格与盒子布局相适应。而MadProgrammer,你的建议让我觉得我可能对swing不太适应,无法实现这一目标。我认为你应该听从MadProgrammers的建议,他比我更了解你的问题,考虑到他的代表和swing方面的经验,很可能有你想要的解决方案。好的,是的,我现在正在研究。谢谢你的建议,马克!我真的很感激。这太棒了,经过测试,它可以完美地缩放图像图标。但是,当面板中有太多单元格时,单元格本身仍然是倾斜的。但希望在我将网格放入JScrollPane后,这个问题能够得到解决。谢谢你发布这个!