Swing/LookAndFeelChangeListener のバックアップ(No.4)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/LookAndFeelChangeListener へ行く。
- title: LookAndFeelの変更を取得する tags: [LookAndFeel, UIManager, PropertyChangeListener, JComponent] author: aterai pubdate: 2014-06-23T01:04:57+09:00 description: LookAndFeelの変更を取得するリスナーの作成などを行います。
概要
LookAndFeel
の変更を取得するリスナーの作成などを行います。
Screenshot
Advertisement
サンプルコード
UIManager.addPropertyChangeListener(new PropertyChangeListener() {
@Override public void propertyChange(PropertyChangeEvent e) {
if (e.getPropertyName().equals("lookAndFeel")) {
//String lnf = e.getNewValue().toString();
updateCheckBox("UIManager: propertyChange");
}
}
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、以下の三種類の方法でLookAndFeel
の変更を取得するテストを行っています。
UIManager: propertyChange
UIManager.addPropertyChangeListener(PropertyChangeListener)
を使用して、LookAndFeel
の変更を取得- このサンプルでは、初回の
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
の後でPropertyChangeListener
を設定しているので、それには反応しない
JPanel: updateUI
LookAndFeel
の変更(SwingUtilities.updateComponentTreeUI(...)
が実行)されると、必ず呼び出されるJComponent.updateUI()
をオーバーライドして変更を取得- このメソッドをオーバーライドしたコンポーネントのコンストラクタが実行される前に呼び出される場合があるので、子コンポーネントの更新は
EventQueue.invokeLater(...)
を使って一連のUI
イベントの一番最後に実行
JMenuItem: actionPerformed
- このサンプルでは、
JRadioButtonMenuItem
でLookAndFeel
を切り替えているので、各ボタンにActionListener
を追加し、チェックされた時にLookAndFeel
の変更を取得 - アクションが実行された時点では、
LookAndFeel
の変更が完了しておらず、UIManager
のプロパティ値も前のLookAndFeel
のままなので、その値の取得はEventQueue.invokeLater(...)
を使って一連のUI
イベントの一番最後に実行
- このサンプルでは、