问题 尺寸,仅改变宽度/高度


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

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

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


2855
2017-08-24 14:56


起源

您所做的基本错误是使用任何维度调用setPreferredSize ;-)您将干扰部分组件上的任何内部大小提示计算。简单地说:不要,永远不要。相反,使用一个体面的LayoutManager。 - kleopatra


答案:


首先,你没有改变JButton的维度。您正在指定所需的首选大小,该大小最​​终可以应用于您的JButton,具体取决于它所插入的组件的LayoutManager。

对于什么问题,使用Dimension对象很好。最终您可以直接访问Dimension字段:

Dimension d = button.getPreferredSize();
d.height = 10;
jbutton.setPreferredSize(d); 

但这几乎是一回事。


14
2017-08-24 14:58



@Patrick:也许我不明白你的问题。 - Heisenbug
您对问题进行了编辑,现在就回答了问题。我似乎无法删除之前的评论,所以我感谢你的新答案。 - Patrick


我最终以Kleopatra说的方式做到了这一点。不更改preferredSize但让布局管理器完成工作。因为这是改变组件大小的正确方法。


2
2017-08-26 07:47



无法抗拒评论,我的语法编译器正在抛出一个 SentenceFragment 错误(但我会把我的肮脏的手放在你的帖子上):) - Ben


你可以这样做:

jbutton.getPreferredSize().height = 100;

请注意,preferredSize属性仅供某些布局管理器使用。


-1
2017-08-24 15:15



你不能这样做因为getPreferredSize()可能会返回首选大小的副本。 - ceklock