LookAndFeelの変更を取得する
Total: 4079, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
LookAndFeelの変更を取得するリスナーの作成などを行います。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
上記のサンプルでは、以下の3種類の方法でLookAndFeelの変更を取得するテストを行っています。
UIManager:propertyChangeUIManager.addPropertyChangeListener(PropertyChangeListener)を使用してLookAndFeelの変更を取得- このサンプルでは、初回の
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName())の実行後にPropertyChangeListenerを設定しているためそれには反応しない
JPanel:updateUILookAndFeelの変更(SwingUtilities.updateComponentTreeUI(...)が実行)されると必ず呼び出されるJComponent.updateUI()をオーバーライドして変更を取得- このメソッドをオーバーライドしたコンポーネントのコンストラクタが実行される前に呼び出される場合があるので、子コンポーネントの更新は
EventQueue.invokeLater(...)を使って一連のUIイベントの一番最後に実行する
JMenuItem:actionPerformed- このサンプルでは
JRadioButtonMenuItemでLookAndFeelを切り替えているので各ボタンにActionListenerを追加してチェックされた時にLookAndFeelの変更を取得している - アクションが実行された時点では
LookAndFeelの変更が完了しておらずUIManagerのプロパティ値も前のLookAndFeelのままなので、その値の取得はEventQueue.invokeLater(...)を使って一連のUIイベントの一番最後に実行する
- このサンプルでは