1

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
4

1 に答える 1

0

私の問題を見つけました!!! ご迷惑をおかけして申し訳ありませんが、ShadowMenuUIを入れたときに、パッケージを含めるのを忘れてしまいました。

于 2013-03-16T02:36:52.373 に答える