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