LookAndFeelの変更を取得する
Total: 3525
, Today: 2
, Yesterday: 0
Posted by aterai at
Last-modified:
概要
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解説
上記のサンプルでは、以下の3
種類の方法で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
イベントの一番最後に実行する
- このサンプルでは