TITLE:JToolBarでアイコンボタンを右寄せ
#navi(../)
*JToolBarでアイコンボタンを右寄せ [#dca938c3]
Posted by [[terai]] at 2006-01-23

#contents

**概要 [#r2fc1a5c]
JToolBarでアイコンボタンを右寄せ、下寄せで表示します。

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

#screenshot

**サンプルコード [#z8d01839]
#code{{
String path = "/toolbarButtonGraphics/general/";
URL url1 = getClass().getResource(path+"Copy24.gif");
URL url2 = getClass().getResource(path+"Cut24.gif");
URL url3 = getClass().getResource(path+"Help24.gif");
toolbar.add(new JButton(new ImageIcon(url1)));
toolbar.add(new JButton(new ImageIcon(url2)));
toolbar.add(Box.createGlue());
toolbar.add(new JButton(new ImageIcon(url3)));
}}

**解説 [#u7eef7af]
JToolBarのデフォルトレイアウトはBoxLayoutなので、Box.createGlueをアイコンボタンの間に挟むことで右寄せをしています。

ボタンとボタンの間隔を固定値で空けたい場合は、Box.createRigidAreaを使用します。Box.createHorizontalStrutやBox.createVerticalStrutを使うとツールバーが水平垂直に切り替わった時に、余計な余白が出来てしまうことがあります。

%%ツールバーが垂直になった場合のことも考えて、VerticalGlueも一緒に挿入していますが、特に問題ないようです。%%

アイコンは、[[Java look and feel Graphics Repository>http://java.sun.com/developer/techDocs/hi/repository/]]のjlfgr-1_0.jarから読み込んでいます。

----
JDK 1.6 で、JDK 1.5 のようなボタン表示にするには、以下のようなリスナーを追加して描画し直す必要があるようです。

#screenshot(,screenshot1.png)

- 以下、[[Swing - Buttons like Netbeans'>http://forums.sun.com/thread.jspa?threadID=5254287]]にある、Yezdi さんの投稿(2008/01/15 8:48)より引用

#code{{
class ToolBarButton extends JButton {
  public ToolBarButton(ImageIcon icon) {
    super(icon);
    setContentAreaFilled(false);
    setFocusPainted(false);
    addMouseListener(new MouseAdapter() {
      public void mouseEntered(MouseEvent me) {
        setContentAreaFilled(true);
      }
      public void mouseExited(MouseEvent me) {
        setContentAreaFilled(false);
      }
    });
  }
}
}}

**参考リンク [#waff2dd4]
-[[Java look and feel Graphics Repository>http://java.sun.com/developer/techDocs/hi/repository/]]
- [[Swing - Buttons like Netbeans'>http://forums.sun.com/thread.jspa?threadID=5254287]]

**コメント [#me4d31ab]
- 環境によって、上記のサンプルが右寄せにならない場合もあるようです。 -- [[terai]] &new{2006-03-22 (水) 15:58:10};

#comment