为什么`jLabel1 = jLabel2`不会改变显示的值?

时间:2011-05-27 02:27:23

标签: java swing

我创建了两个JLabel,并将其中一个添加到我的JFrame中,但当我将另一个分配给添加的JLabel时,JFrame不会更新

add(jLabel1);
jLabel1 = jLabel2;

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:6)

jLabel1 = jLabel2; 

那不会将标签添加到框架中。

变量包含对象的引用。在赋值语句变量jLabel1和jLabel2之后,它们都包含对同一对象的引用。由于您的第二个标签尚未添加到框架中,因此两个变量仅引用内存中的对象。

您可以执行以下操作:

jLabel1.setText( jLabel2.getText() );

实际上确实不需要第二个标签存在。如果您想更改GUI中标签上的文字,您可以这样做:

jLabel1.setText("some text");

答案 1 :(得分:4)

在这一行:

add(jLabel1);

您正在向GUI添加jLabel1所指的对象。您没有将jLabel1 变量本身添加到GUI。

在这一行:

jLabel1 = jLabel2;

您正在更改jLabel1所指的对象。这对添加到GUI的原始对象有绝对没有影响

解决方案是按照camickr的回答(1 +)