Swing/LookAndFeelChangeListener のバックアップ(No.9)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/LookAndFeelChangeListener へ行く。
- 1 (2014-06-23 (月) 01:04:57)
- 2 (2014-06-23 (月) 14:52:51)
- 3 (2014-11-08 (土) 01:20:14)
- 4 (2015-12-10 (木) 04:03:05)
- 5 (2017-06-07 (水) 15:38:25)
- 6 (2018-06-01 (金) 15:08:49)
- 7 (2020-05-31 (日) 21:08:03)
- 8 (2021-11-13 (土) 19:57:15)
- 9 (2025-01-03 (金) 08:57:02)
- 10 (2025-01-03 (金) 09:01:23)
- 11 (2025-01-03 (金) 09:02:38)
- 12 (2025-01-03 (金) 09:03:21)
- 13 (2025-01-03 (金) 09:04:02)
- 14 (2025-06-19 (木) 12:41:37)
- 15 (2025-06-19 (木) 12:43:47)
- category: swing
folder: LookAndFeelChangeListener
title: LookAndFeelの変更を取得する
tags: [LookAndFeel, UIManager, PropertyChangeListener, JComponent]
author: aterai
pubdate: 2014-06-23T01:04:57+09:00
description: LookAndFeelの変更を取得するリスナーの作成などを行います。
image:

概要
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: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イベントの一番最後に実行する
- このサンプルでは