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,border
        =com.apple.laf.AquaMenuBorder@165262ce,flags=8,maximumSize=,
        minimumSize=,preferredSize=,desiredLocationX=0,
        desiredLocationY=0,label=System,lightWeightPopupEnabled=true
        ,margin=,paintBorder=true]
java.lang.错误
4

1 回答 1

0

发现我的问题!!!很抱歉打扰你,但我的问题是当我放 ShadowMenuUI 时,我忘了包含包!

于 2013-03-16T02:36:52.373 回答