查看 JLabel 的源代码,我担心文本字段的可见性。我提取了设置文本字段和检索 oldValue 的基本部分。在我看来,如果 String 文本字段未声明为 volatile,则可见性处于危险之中,因为 firePropertyChange 可能看不到从之前由另一个线程保存的文本字段中检索到的 oldValue。我是对的,还是我错过了什么?请注意,这不是讨论 SwingUtility。
public class JLabel extends JComponent implements SwingConstants, Accessible {
...
private String text = ""; // "" rather than null, for BeanBox
...
public void setText(String text) {
String oldAccessibleName = null;
if (accessibleContext != null) {
oldAccessibleName = accessibleContext.getAccessibleName();
}
String oldValue = this.text;
this.text = text;
firePropertyChange("text", oldValue, text);
...
提前谢谢了。