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