Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在设置组件大小时重用维度对象_Java_Swing_User Interface_Awt_Single Instance - Fatal编程技术网

Java在设置组件大小时重用维度对象

Java在设置组件大小时重用维度对象,java,swing,user-interface,awt,single-instance,Java,Swing,User Interface,Awt,Single Instance,禁止使用多个预设的标注对象在屏幕上设置不可调整大小的组件的首选尺寸。 例如:两个文本字段均应为80x20 px,因此: Dimension d = new Dimension(80, 20); tf1.setPreferredSize(d); tf2.setPreferredSize(d); 是的,它是“安全的”。引自: […]此同一维度对象可用于多个组件。[……] 但这取决于你想要什么。请注意,组件中的实现不会复制参数的内容,而是存储引用: public void setPreferredS

禁止使用多个预设的标注对象在屏幕上设置不可调整大小的组件的首选尺寸。 例如:两个文本字段均应为80x20 px,因此:

Dimension d = new Dimension(80, 20);
tf1.setPreferredSize(d);
tf2.setPreferredSize(d);
是的,它是“安全的”。引自:

[…]此同一维度对象可用于多个组件。[……]

但这取决于你想要什么。请注意,
组件
中的实现不会复制参数的内容,而是存储引用:

public void setPreferredSize(Dimension preferredSize) {
    ...
    this.prefSize = preferredSize;
    ...
}
因此,更改
d
将影响存储在
tf1
tf2
中的维度对象

(我想说的是,下面的代码可能不会达到您预期的效果。)

尺寸d=新尺寸(80,20);
tf1.setPreferredSize(d);
d、 宽度+=1;// 是的,它是“安全的”。引自:

[…]此同一维度对象可用于多个组件。[……]

但这取决于你想要什么。请注意,
组件
中的实现不会复制参数的内容,而是存储引用:

public void setPreferredSize(Dimension preferredSize) {
    ...
    this.prefSize = preferredSize;
    ...
}
因此,更改
d
将影响存储在
tf1
tf2
中的维度对象

(我想说的是,下面的代码可能不会达到您预期的效果。)

尺寸d=新尺寸(80,20);
tf1.setPreferredSize(d);

d、 宽度+=1;//但是当您更改
d
时,
tf1
tf2
都不会得到通知,因此他们只能“偶然”发现。这就是为什么我认为使
维度
可变是个坏主意。@Joachim,实际上Sun使
维度
矩形
。。。可变最初是一个糟糕的设计决策,因此现在由开发人员来关注这一事实,并针对此类类实例的可变性进行代码防御。我不认为问题主要是“如果修改维度对象会发生什么”。问题更多的是它是否被认为是安全的。我提到“更改
d
”是为了澄清他不能执行
tf1.setPrefSize(d);d、 宽度+=5;tf2.setPrefSize(d)
。但是当您更改
d
时,
tf1
tf2
都不会得到通知,因此他们只能“偶然”找到它。这就是为什么我认为使
维度
可变是个坏主意。@Joachim,实际上Sun使
维度
矩形
。。。可变最初是一个糟糕的设计决策,因此现在由开发人员来关注这一事实,并针对此类类实例的可变性进行代码防御。我不认为问题主要是“如果修改维度对象会发生什么”。问题更多的是它是否被认为是安全的。我提到“更改
d
”是为了澄清他不能执行
tf1.setPrefSize(d);d、 宽度+=5;tf2.setPrefSize(d)。真正的问题是:您真的应该在
JTextField
(或任何Swing
JComponent
)上调用
setPreferreedSize()
?答案是否定的,这是一种非常糟糕的做法。“在医学中,禁忌症是一种情况或因素,可以作为拒绝某种治疗的理由。”真正的问题是:你真的应该在
JTextField
(或任何Swing
JComponent
)上调用
setPreferredSize()
?答案是否定的,这是一种非常糟糕的做法。“在医学中,禁忌症是一种情况或因素,可以作为拒绝某种治疗的理由。”