• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:LookAndFeelの一覧を取得する
#navi(../)
RIGHT:Posted by [[terai]] at 2009-01-19
*LookAndFeelの一覧を取得する [#n56e30d7]
インストールされているLookAndFeelの一覧を取得し、これらを切り替えるためのメニューバーを作成します。[[SwingSet3>https://swingset3.dev.java.net/]]からの引用です。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#hedae77c]
#code{{
private ButtonGroup lookAndFeelRadioGroup;
private String lookAndFeel;
protected JMenu createLookAndFeelMenu() {
  JMenu menu = new JMenu("LookAndFeel");
  lookAndFeel = UIManager.getLookAndFeel().getClass().getName();
  lookAndFeelRadioGroup = new ButtonGroup();
  for(UIManager.LookAndFeelInfo lafInfo: UIManager.getInstalledLookAndFeels()) {
    menu.add(createLookAndFeelItem(lafInfo.getName(), lafInfo.getClassName()));
  }
  return menu;
}
protected JRadioButtonMenuItem createLookAndFeelItem(String lafName, String lafClassName) {
  JRadioButtonMenuItem lafItem = new JRadioButtonMenuItem();
  lafItem.setSelected(lafClassName.equals(lookAndFeel));
  lafItem.setHideActionText(true);
  lafItem.setAction(new AbstractAction() {
    public void actionPerformed(ActionEvent e) {
      ButtonModel m = lookAndFeelRadioGroup.getSelection();
      try{
        setLookAndFeel(m.getActionCommand());
      }catch(Exception ex) {
        ex.printStackTrace();
      }
    }
  });
  lafItem.setText(lafName);
  lafItem.setActionCommand(lafClassName);
  lookAndFeelRadioGroup.add(lafItem);
  return lafItem;
}
public void setLookAndFeel(String lookAndFeel) throws ClassNotFoundException,
      InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
  String oldLookAndFeel = this.lookAndFeel;
  if (oldLookAndFeel != lookAndFeel) {
    UIManager.setLookAndFeel(lookAndFeel);
    this.lookAndFeel = lookAndFeel;
    updateLookAndFeel();
    firePropertyChange("lookAndFeel", oldLookAndFeel, lookAndFeel);
  }
}
private void updateLookAndFeel() {
  Window windows[] = Frame.getWindows();
  for(Window window : windows) {
    SwingUtilities.updateComponentTreeUI(window);
  }
}
}}

**解説 [#q3a14a56]
上記のサンプルでは、UIManager.getInstalledLookAndFeels()メソッドを使用してUIManager.LookAndFeelInfoのリストを取得しています。

**参考リンク [#p2860eba]
-[[SwingSet3>https://swingset3.dev.java.net/]]
-[[Look and Feelの変更>Swing/LookAndFeel]]
--こちらは、SwingSet2からの引用です。

**コメント [#k986f53e]
#comment