Swing/LookAndFeelChangeListener のバックアップ(No.7)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - 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)
- 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
: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
イベントの一番最後に実行する
- このサンプルでは、