JToolBar専用JSeparatorのサイズを指定する
Total: 1083, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JToolBar専用JToolBar.Separatorのサイズ変更をテストします。
Screenshot

Advertisement
Source Code Examples
// 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, KotlinDescription
- 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);
}
}
});