Swing 用の独自のメニュー UI を作成しようとしていますが、エラーが発生します。BasicPopupMenuUI次のコードを拡張して含むクラスがあります。
public static ComponentUI createUI(JComponent c) {
return new ShadowMenuUI();
}
public Popup getPopup(JPopupMenu popup, int x, int y) {
Popup pp = super.getPopup(popup, x, y);
JPanel panel = (JPanel) popup.getParent();
panel.setBorder(new ShadowBorder(3, 3));
panel.setOpaque(false);
return pp;
}
あなたが疑問に思っているなら、ShadowBorder私が持っているクラスは、AbstractBorder私が望むように影を拡張してペイントします. アプリケーションを開始するとき、最初に行うことは
UIManager.put("PopupMenuUI", "ShadowMenuUI");
次に、引き続き GUI を作成し、L&F を設定します (このアプリケーションには Nimbus を使用しています)。
編集:私が得ているエラーは
UIDefaults.getUI() が失敗しました: ComponentUI クラスがありません:
javax.swing.JPopupMenu[,0,0,0x0,invalid,layout=javax.swing.plaf.
basic.DefaultMenuLayout,alignmentX=0.0,alignmentY=0.0,ボーダー
=com.apple.laf.AquaMenuBorder@165262ce,flags=8,maximumSize=,
minimumSize=,preferredSize=,desiredLocationX=0,
desiredLocationY=0,label=システム,lightWeightPopupEnabled=true
、余白 =、paintBorder = true]
java.lang.Error