Ошибка BasicPopupMenuUI

Я пытаюсь создать собственный пользовательский интерфейс меню для Swing, но сталкиваюсь с ошибкой. У меня есть класс, расширяющий 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");

Затем я продолжаю создавать свой графический интерфейс и устанавливаю L&F (я использую Nimbus для этого приложения). Так кто-нибудь видит, что я делаю неправильно, или есть ли лучший способ сделать то, что я делаю?

РЕДАКТИРОВАТЬ: я получаю ошибку

UIDefaults.getUI() failed: no ComponentUI class for:
    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.Error

person TheNerdyCoder    schedule 16.03.2013    source источник
comment
С какой ошибкой вы столкнулись?   -  person Nathaniel Waisbrot    schedule 16.03.2013
comment
@NathanielWaisbrot О да. Извините, забыл добавить это. Ошибка UIDefaults.getUI (): нет класса ComponentUI для: javax.swing.JPopupMenu [, 0,0,0x0, недопустимый, layout = javax.swing.plaf.basic.DefaultMenuLayout, alignmentX = 0.0, alignmentY = 0.0, border = com .apple.laf.AquaMenuBorder @ 165262ce, flags = 8, maximumSize =, minimumSize =, предпочтительный размер =, желаемыйLocationX = 0, желаемыйLocationY = 0, label = System, lightWeightPopupEnabled = true, margin =, paintBorder = true] java.lang.Error   -  person TheNerdyCoder    schedule 16.03.2013


Ответы (1)


Нашел свою проблему !!! Извините, что беспокою вас, но моя проблема заключалась в том, что когда я поставил ShadowMenuUI, я забыл включить пакет!

person TheNerdyCoder    schedule 16.03.2013