2

Java 1.6 具有具有包级别访问权限的 Synth plaf 类。

我尝试扩展这些

package javax.swing.plaf.synth;

import javax.swing.JComponent;
import javax.swing.plaf.ComponentUI;

class MyCheckBoxUI extends SynthCheckBoxUI {
    public static ComponentUI createUI(JComponent b) {
        return new MyCheckBoxUI();
    }
}

然而,在实例化时,这失败了

线程“主”java.lang.IllegalAccessError 中的异常:类 javax.swing.plaf.synth.MyCheckBoxUI 无法访问其超类 javax.swing.plaf.synth.SynthCheckBoxUI

public class TestApp {
    public static void main(String[] args) throws Throwable {
        for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
            if ("Nimbus".equals(info.getName())) {
                UIManager.setLookAndFeel(info.getClassName());

                break;
            }
        }

        UIManager.put("CheckBoxUI", "javax.swing.plaf.synth.MyCheckBoxUI");

        JFrame frame = new JFrame();

        frame.add(new JCheckBox("Hello", true));
        frame.pack();
        frame.setVisible(true);
    }
}

谁能建议我如何解决这种情况。我必须坚持使用 jdk 1.6

4

0 回答 0