JToolBar専用JSeparatorのサイズを指定する
Total: 619
, Today: 1
, Yesterday: 1
Posted by aterai at
Last-modified:
概要
JToolBar
専用JToolBar.Separator
のサイズ変更をテストします。
Screenshot
Advertisement
サンプルコード
// UIManager.put("ToolBar.separatorSize", new Dimension(2, 20));
JToolBar bar = new JToolBar();
bar.add(new JCheckBox("JCheckBox"));
bar.addSeparator();
bar.add(new JRadioButton("JRadioButton"));
bar.addSeparator(new Dimension(32, 32));
bar.add(new JButton("JButton"));
bar.addSeparator(new Dimension(10, 10));
bar.add(new JToggleButton("JToggleButton"));
bar.add(Box.createVerticalGlue());
SpinnerNumberModel mw = new SpinnerNumberModel(10, -10, 50, 1);
SpinnerNumberModel mh = new SpinnerNumberModel(32, -10, 50, 1);
ChangeListener cl = e -> {
Dimension d = new Dimension(
mw.getNumber().intValue(), mh.getNumber().intValue());
for (Component c : bar.getComponents()) {
if (c instanceof JToolBar.Separator) {
((JToolBar.Separator) c).setSeparatorSize(d);
}
}
bar.revalidate();
};
mw.addChangeListener(cl);
mh.addChangeListener(cl);
View in GitHub: Java, Kotlin解説
- JToolBar#addSeparator(Dimension)メソッドで
JToolBar
にサイズを指定してJSeparator
を追加可能 UIManager.put("ToolBar.separatorSize", new Dimension(...))
でまとめてデフォルトのJToolBar.Separator
のサイズ指定する方法もあるUIManager.put("ToolBar.separatorSize", new Dimension(...))
を使用した水平JToolBar
の場合、幅が高さ、高さが幅に自動的に入れ替わる
JToolBar.Separator
のサイズをJToolBar#addSeparator(Dimension)
やJToolBar.Separator#setSeparatorSize(...)
で指定して水平JToolBar
を垂直JToolBar
に変換:UIManager.put("ToolBar.separatorSize", new Dimension(...))
を使用した場合と異なり、幅と高さの入れ替えは発生しないWindowsLookAndFeel
の場合、区切り線は指定した幅までのみ描画され、親JToolBar
の幅まで拡張されないNimbusLookAndFeel
の場合、区切り点線は親JToolBar
の幅まで拡張して描画されるMetalLookAndFeel
の場合、区切り線は描画されず指定したサイズがコンポーネントの間隔になる
JToolBar.Separator#setSeparatorSize(Dimension)
- 負のサイズを設定してもエラーにはならない
null
を設定してもなにも変化せず、初期状態に戻せない?- このサンプルでは以下のように一旦
JToolBar#removeAll()
ですべてのコンポーネントを削除してからサイズ指定なしでJToolBar#addSeparator()
を使用してJToolBar.Separator
を追加しなおしている
JButton button = new JButton("reset");
button.addActionListener(e -> {
Component[] list = bar.getComponents();
bar.removeAll();
for (Component c : list) {
if (c instanceof JToolBar.Separator) {
bar.addSeparator();
} else {
bar.add(c);
}
}
});