我想自己做一个JComboButton组件,UI需要自己实现,于是我参考JComboBox写了一些文件,一共是11个,完全参照JComboBox来写的,其实就是把JComboBox的相关文件复制一份,然后把里面的相关内容由box改成button,然后编译通过。改完以后,文件结构如下:javax.swing               ComboButtonModel.java
javax.swing               ComboButtonEditor.java
javax.swing               JComboButton.java
javax.swing               DefaultComboButtonModel.java
javax.swing               MutableComboButtonModel.javajavax.swing.plaf          ComboButtonUI.javajavax.swing.plaf.basic    BasicComboButtonEditor.java
javax.swing.plaf.basic    BasicComboButtonPopup.java
javax.swing.plaf.basic    BasicComboButtonRenderer.java
javax.swing.plaf.basic    BasicComboButtonUI.java
javax.swing.plaf.basic    ComboButtonPopup.java
写完之后,我在JComboButton类中加入了如下代码:    private static final String uiClassID = "ComboButtonUI";
    
    static{
        UIManager.put(uiClassID,"javax.swing.plaf.basic.BasicComboButtonUI");
        //UIManager.put(uiClassID,"javax.swing.plaf.ComboButtonUI");
    }
同时重写了相关的方法:    public void setUI(ComboButtonUI ui) {
        super.setUI(ui);
    }    public void updateUI() {
        setUI((ComboButtonUI)UIManager.getUI(this));        ListCellRenderer renderer = getRenderer();
        if (renderer instanceof Component) {
            SwingUtilities.updateComponentTreeUI((Component)renderer);
        }
    }    public String getUIClassID() {
        return uiClassID;
    }    public ComboButtonUI getUI() {
        return(ComboButtonUI)ui;
    }
结果组件在初始化的时候,报出了以下错误:
Exception in thread "AWT-EventQueue-0" java.lang.IllegalAccessError: tried to access method javax.swing.JComponent.setUIProperty(Ljava/lang/String;Ljava/lang/Object;)V from class javax.swing.JComboButton
at javax.swing.JComboButton.init(JComboButton.java:216)
at javax.swing.JComboButton.<init>(JComboButton.java:183)
at uitext.MainFrame.jbInit(MainFrame.java:53)
at uitext.MainFrame.<init>(MainFrame.java:40)
at uitext.UITest.<init>(UITest.java:27)
at uitext.UITest$1.run(UITest.java:65)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)问题是我已经在JComboButton类中静态注册了呀,为什么还是报这种错误?请问这种问题该怎么解决?还有,如果我想为此组件使用自己的颜色、字体,要在哪里进行初始化?