概要
JToolBar
でアイコンボタンを右寄せ、下寄せで表示します。
Screenshot
Advertisement
サンプルコード
// jlfgr-1_0.jar
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(createToolbarButton(url1));
toolbar.add(createToolbarButton(url2));
toolbar.add(Box.createGlue());
toolbar.add(createToolbarButton(url3));
// ...
private static JButton createToolbarButton(URL url) {
JButton b = new JButton(new ImageIcon(url));
b.setRequestFocusEnabled(false);
// or: b.setFocusPainted(false);
return b;
}
View in GitHub: Java, Kotlin解説
JToolBar
やJMenuBar
のデフォルトレイアウトはBoxLayout
のためBox.createGlue()
を間に挟むことでボタンやメニューの右寄せが可能- ボタンとボタンの間隔を固定値で空けたい場合は
Box.createRigidArea
を使用するBox.createHorizontalStrut(...)
やBox.createVerticalStrut(...)
を使うとツールバーの水平・垂直が切り替わった時に余計な余白が発生する場合がある
- 各アイコンはJava look and feel Graphics Repositoryの
jlfgr-1_0.jar
がクラスパス内に存在する場合はそこから読み込んでいる
JDK 1.6
とJDK 1.5
でJToolBar
に配置したボタン表示が異なる?JComponent#setRequestFocusEnabled(false)
(マウスクリックではフォーカスを取得しないがキーボードからは許可)、またはAbstractButton#setFocusable(false)
と設定すると同一になる
- マウスクリックでツールバーボタンにフォーカスが移動すると、コピーボタンを押したらテキストエディタでの文字列選択状態がクリアされたり、参考の質問のような不具合が起こる
- 参考: Swing - JTextPane selection color problemの camickr さんの投稿(2008/10/25 0:34)
%JAVA_HOME%/demo/jfc/Notepad/src/Notepad.java
参考リンク
- Java look and feel Graphics Repository
- Swing - Buttons like Netbeans'
- Customizing Menu Layout - How to Use Menus (The Java™ Tutorials > Creating a GUI With JFC/Swing > Using Swing Components)
- JComponent#setRequestFocusEnabled(boolean) (Java Platform SE 8)
- AbstractButton#setFocusPainted(boolean) (Java Platform SE 8)