Swing/AuxiliaryLookAndFeel のバックアップの現在との差分(No.2)
TITLE:AuxiliaryLookAndFeelを追加する
Posted by aterai at 2012-04-09
AuxiliaryLookAndFeelを追加する
AuxiliaryLookAndFeelを追加して、WindowsLookAndFeelの場合の動作を変更します。- category: swing folder: AuxiliaryLookAndFeel title: AuxiliaryLookAndFeelを追加する tags: [LookAndFeel, AuxiliaryLookAndFeel, UIManager, JComboBox] author: aterai pubdate: 2012-04-09T14:26:00+09:00 description: AuxiliaryLookAndFeelを追加して、WindowsLookAndFeelの場合の動作を変更します。 image:
概要
AuxiliaryLookAndFeel
を追加して、WindowsLookAndFeel
の場合の動作を変更します。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
サンプルコード
#spandel
JCheckBox check = (JCheckBox)e.getSource();
#spanend
#spanadd
JCheckBox check = (JCheckBox) e.getSource();
#spanend
String lnf = UIManager.getLookAndFeel().getName();
#spandel
if(check.isSelected() && lnf.contains("Windows")) {
#spanend
#spanadd
if (check.isSelected() && lnf.contains("Windows")) {
#spanend
UIManager.addAuxiliaryLookAndFeel(auxLookAndFeel);
#spandel
}else{
#spanend
#spanadd
} else {
#spanend
UIManager.removeAuxiliaryLookAndFeel(auxLookAndFeel);
}
#spandel
SwingUtilities.updateComponentTreeUI(MainPanel.this);
#spanend
#spanadd
SwingUtilities.updateComponentTreeUI(getRootPane());
#spanend
View in GitHub: Java, Kotlin解説
WindowsLookAndFeelの場合、JComboBoxのドロップダウンリストで右クリックを無効にするようなBomboBoxUIを追加しています。解説
WindowsLookAndFeel
の場合、それを修正することなくJComboBox
のドロップダウンリストで右クリックを無効にするようなComboBoxUI
をUIManager.addAuxiliaryLookAndFeel(...)
を使って追加しています。
public class AuxiliaryWindowsComboBoxUI extends WindowsComboBoxUI {
public static ComponentUI createUI(JComponent c) {
return new AuxiliaryWindowsComboBoxUI();
}
#spanadd
#spanend
@Override protected ComboPopup createPopup() {
return new BasicComboPopup2(comboBox);
}
#spanadd
#spanend
@Override public void addEditor() {
removeEditor();
ComboBoxEditor cbe = comboBox.getEditor();
if(cbe != null) {
if (cbe != null) {
editor = cbe.getEditorComponent();
if(editor != null) {
if (editor != null) {
configureEditor();
comboBox.add(editor);
if(comboBox.isFocusOwner()) {
if (comboBox.isFocusOwner()) {
editor.requestFocusInWindow();
}
}
}
}
#spanadd
#spanend
//Override all UI-specific methods your UI classes inherit.
@Override public void removeEditor() {}
#spanadd
#spanend
@Override protected void configureEditor() {}
#spanadd
#spanend
@Override protected void unconfigureEditor() {}
#spanadd
#spanend
@Override public void update(Graphics g, JComponent c) {}
#spanadd
#spanend
@Override public void paint(Graphics g, JComponent c) {}
//...
// ...
- 注
- LookAndFeelをNimbusにするとClassCastExceptionが発生する
- UIManager.addPropertyChangeListener(new PropertyChangeListener() {...});を追加して、WindowsLookAndFeel以外の場合は、UIManager.removeAuxiliaryLookAndFeel(auxLookAndFeel);
- 編集可能なJComboBoxの場合、NullPointerExceptionが発生する
- WindowsComboBoxUI#addEditor()をオーバーライド
-
LookAndFeel
をNimbus
にするとClassCastException
が発生する -
UIManager.addPropertyChangeListener(new PropertyChangeListener() {...});
を追加してWindowsLookAndFeel
以外の場合は、UIManager.removeAuxiliaryLookAndFeel(auxLookAndFeel);
- 編集可能な
JComboBox
の場合NullPointerException
が発生する-
WindowsComboBoxUI#addEditor()
をオーバーライド
-
参考リンク
参考リンク
コメント
- いつか修正: AuxiliaryLookAndFeelの作成方法、使い方などをいろいろ間違えているような気がする…。 -- aterai
コメント
-
AuxiliaryLookAndFeel
の作成方法について。公式のサンプルなどが見つからないので使い方などを間違えていないといいけど…。 -- aterai