JPopupMenu用JSeparatorの高さを変更する
Total: 259
, Today: 1
, Yesterday: 2
Posted by aterai at
Last-modified:
概要
JPopupMenu
に追加するJSeparator
の高さや長さを変更します。
Screenshot
Advertisement
サンプルコード
popup.add("↓ addSeparator()");
popup.addSeparator();
popup.add("↓ add(new JPopupMenu.Separator()");
popup.add(new JPopupMenu.Separator() {
@Override public Dimension getPreferredSize() {
Dimension d = super.getPreferredSize();
d.height = 4;
return d;
}
});
popup.add("↓ JPopupMenu.Separator(): font size 16f");
popup.add(new JPopupMenu.Separator() {
@Override public Font getFont() {
return super.getFont().deriveFont(16f);
}
});
popup.add("↓ PopupMenuSeparator.contentMargins");
popup.add(new JPopupMenu.Separator() {
@Override public void updateUI() {
super.updateUI();
UIDefaults d = new UIDefaults();
d.put("PopupMenuSeparator.contentMargins", new Insets(3, 0, 3, 0));
putClientProperty("Nimbus.Overrides", d);
putClientProperty("Nimbus.Overrides.InheritDefaults", true);
}
});
View in GitHub: Java, Kotlin解説
add(new JSeparator()
new JSeparator()
でセパレータを作成してJPopupMenu
に追加WindowsLookAndFeel
でもJSeparator
の長さはJPopupMenu
の幅まで描画される
JSeparator(): height = 8
new JSeparator()
でセパレータを作成してJPopupMenu
に追加JSeparator#getPreferredSize()
をオーバーライドしてその高さを8px
に拡大
addSeparator()
JPopupMenu#addSeparator()
でJPopupMenu
固有のセパレータを追加JPopupMenu#add(new JPopupMenu.Separator())
と同等WindowsLookAndFeel
の場合JSeparator
の長さはメニューアイコンの幅だけ短く描画される
JPopupMenu.Separator(): height = 4
new JPopupMenu.Separator()
でJPopupMenu
固有のセパレータを作成してJPopupMenu
に追加JPopupMenu.Separator#getPreferredSize()
をオーバーライドしてその高さを4px
に縮小
JPopupMenu.Separator(): font size 16f
new JPopupMenu.Separator()
でJPopupMenu
固有のセパレータを作成してJPopupMenu
に追加JPopupMenu.Separator#getFont()
をオーバーライドしてフォントサイズを16pt
に拡大WindowsLookAndFeel
の場合JPopupMenu
固有のセパレータの推奨サイズはfontHeight / 2 + 2
で計算されるのでセパレータの高さが変化するcom.sun.java.swing.plaf.windows.WindowsPopupMenuSeparatorUI#getPreferredSize()
を参照
PopupMenuSeparator.contentMargins
NimbusLookAndFeel
の場合PopupMenuSeparator.contentMargins
でJPopupMenu
固有のセパレータのマージンを変更可能- このサンプルでは
new Insets(3, 0, 3, 0)
で上下3px
の余白を追加している