Swing/ToolBarLayout のバックアップの現在との差分(No.25)
- category: swing folder: ToolBarLayout title: JToolBarでアイコンボタンを右寄せ tags: [JToolBar, JMenuBar, BoxLayout, JButton, Focus] author: aterai pubdate: 2006-01-23T14:20:11+09:00 description: JToolBarでアイコンボタンを右寄せ、下寄せで表示します。 image:
概要
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));
#spandel
View in GitHub: Java, Kotlin#spanend
#spanadd
// ...
#spanend
private static JButton createToolbarButton(URL url) {
JButton b = new JButton(new ImageIcon(url));
b.setRequestFocusEnabled(false);
// or: b.setFocusPainted(false);
return b;
}
解説
JToolBar
やJMenuBar
のデフォルトレイアウトはBoxLayout
なので、Box.createGlue()
を間に挟むことでボタンやメニューの右寄せが可能です。
-
JToolBar
やJMenuBar
のデフォルトレイアウトはBoxLayout
のためBox.createGlue()
を間に挟むことでボタンやメニューの右寄せが可能 - ボタンとボタンの間隔を固定値で空けたい場合は
Box.createRigidArea
を使用する-
Box.createHorizontalStrut(...)
やBox.createVerticalStrut(...)
を使うとツールバーの水平・垂直が切り替わった時に余計な余白が発生する場合がある
-
- 各アイコンはJava look and feel Graphics Repositoryの
jlfgr-1_0.jar
がクラスパス内に存在する場合はそこから読み込んでいる
Box.createRigidArea
を使用します。Box.createHorizontalStrut(...)
やBox.createVerticalStrut(...)
を使うとツールバーが水平垂直に切り替わった時に、余計な余白が出来てしまうことがあります。
アイコンは、Java look and feel Graphics Repositoryのjlfgr-1_0.jar
から読み込んでいます。
JDK 1.6
で、JDK 1.5
のようなボタン表示(フォーカスを取得しない)にするには、JButton#setRequestFocusEnabled(false)
(マウスクリックではフォーカスを取得しないが、キーボードからは許可)、または、JButton#setFocusable(false)
とする必要があるようです。
-
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)
- 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)