尺寸,仅更改宽度/高度

时间:2011-08-24 14:56:51

标签: java swing layout-manager dimension

如何仅更改需要Dimension对象的组件的宽度或高度?目前我这样做:

jbutton.setPreferredSize(new Dimension(button.getPreferredSize().width, 100));

但我觉得我做错了。 如果有更好的方法,最好的方法是什么?

3 个答案:

答案 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提供了正确的较低宽度,该宽度仍水平地填充了容器,并且为我提供了较低的高度,以防止垂直拉伸。