禁止使用多个预设尺寸对象来设置屏幕上不可调整大小的组件的首选大小。 例如:两个文本域都应该是80x20像素,所以:
Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
tf2.setPreferredSize(d);
答案 0 :(得分:4)
是的,这是“安全的”。引自Java Performance Tuning:
[...] 同一个Dimension对象可以重复用于多个组件。 [...]
取决于你想要的东西。请注意,Component
中的实现不会复制参数的内容,而是存储引用:
public void setPreferredSize(Dimension preferredSize) {
...
this.prefSize = preferredSize;
...
}
因此更改d
会影响tf1
和tf2
中存储的维度对象。
(我所说的是下面的代码可能无法达到预期效果。)
Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
d.width += 1; // <-- will affect also tf1.
tf2.setPreferredSize(d);