JLabel のソース コードを調べると、テキスト フィールドの可視性に懸念があります。テキストフィールドを設定し、oldValue を取得するために必要な部分を抽出しました。私の意見では、String テキスト フィールドが volatile と宣言されていない場合、以前に別のスレッドによって保存されたテキスト フィールドから取得された oldValue が firePropertyChange に表示されない可能性があるため、可視性が危険にさらされています。私は正しいですか、それとも何かを見逃していますか?これは 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);
...
よろしくお願いします。