Java 为什么';t`jLabel1=jLabel2`是否更改显示的值?

Java 为什么';t`jLabel1=jLabel2`是否更改显示的值?,java,swing,Java,Swing,我创建了两个jlabel,并将其中一个添加到我的JFrame中,但当我将另一个jlabel分配给添加的JFrame时,JFrame不会更新 add(jLabel1); jLabel1 = jLabel2; 我怎样才能解决这个问题 jLabel1 = jLabel2; 这不会将标签添加到框架中 变量包含对对象的引用。在赋值语句之后,变量jLabel1和jLabel2都将包含对同一对象的引用。由于您的第二个标签尚未添加到帧中,因此这两个变量仅引用内存中的一个对象 您可以执行以下操作: jLab

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

add(jLabel1);
jLabel1 = jLabel2;
我怎样才能解决这个问题

jLabel1 = jLabel2; 
这不会将标签添加到框架中

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

您可以执行以下操作:

jLabel1.setText( jLabel2.getText() );
实际上,第二个标签真的没有必要存在。如果要更改GUI中标签上的文本,只需执行以下操作:

jLabel1.setText("some text");
在这方面:

add(jLabel1);
jLabel1 = jLabel2;
您正在将jLabel1所指的对象添加到GUI中。您没有将jLabel1变量本身添加到GUI中

在这方面:

add(jLabel1);
jLabel1 = jLabel2;
您正在更改jLabel1引用的对象。这对添加到GUI的原始对象绝对没有影响


解决方案是根据camickr的答案(1+)

+1,但是,我认为应该对
x=y
的真正作用进行扩展(考虑到问题的上下文)。我通过1.删除jLabel1 2.jLabel1=jLabel2;3.4加入jLabel1。repainting@Mohammad在这种情况下,没有理由重新分配jLabel1——删除jLabel1->添加jLabel2。在大多数情况下不需要手动重新绘制。jLabel2是一个本地临时对象,这就是我这样做的原因that@Mohammad:你的评论毫无意义。请提供一些上下文以便理解。同样,为什么不简单地更改现有可视化JLabel的文本和/或图标呢?我有一个地图,地图由块组成,每个块都有不同的类型,用户可以更改块的类型,我在第一条注释中编写的代码更改块的类型,我不能做pst所说的