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