如何仅更改需要Dimension
对象的组件的宽度或高度?目前我是这样的:
jbutton.setPreferredSize(new Dimension(button.getPreferredSize().width, 100));
但是我有一种错误的感觉。如果有更好的方法,最好的方法是什么?
首先,您没有更改JButton的尺寸。您正在指定所需的首选大小,最终可以将其应用于您的JButton,具体取决于插入该组件的LayoutManager。
出于什么考虑,可以使用Dimension对象。最终,您可以直接访问“维度”字段:
Dimension d = button.getPreferredSize();
d.height = 10;
jbutton.setPreferredSize(d);
但是几乎是同一回事。
我最终按照克娄巴特拉所说的去做。不更改preferredSize,而是让布局管理器完成这项工作。因为这是更改组件大小的正确方法。
我有相同的问题,但使用的应用程序不同-我只需要限制我要添加到具有BoxLayout的容器中的JPanel的高度。因此,当我在其上调用setMaximumSize并将其PreferredSize用作宽度时,结果是它没有得到我期望的水平尺寸拉伸;它变短了,因为那是它的首选尺寸。我找不到布局管理器正在应用的实际宽度,因此对于在新Dimension中使用什么宽度感到困惑,但是我想要的高度设置就很好了。最终答案是:
myJPanel.setMaximumSize(new Dimension(<some overly high width value>, <desired height>));
然后,BoxLayout管理器为myJpanel提供了仍然可以水平填充容器的正确的较低宽度,以及我想要防止垂直拉伸的较低高度。