4

JButton を拡張する ImageButton というカスタム ボタン クラスがあります。その中に、JButton の setEnabled メソッドではなく、呼び出したい setEnabled メソッドがあります。

私のコードは以下です。別のクラスで ImageButton の新しいインスタンスを作成しましたが、setEnabled メソッドを使用しようとすると、JButton の setEnabled メソッドに直接行きます。コードを実行する前であっても、IDE は ImageButton の setEnabled メソッドが使用されていないことを通知しています。メソッドを「SetOn」に変更すると、正常に動作します。では、スーパークラスと同じ名前を使用できないのはなぜですか? 同じ名前ならスーパークラスのメソッドを非表示にするはずだと思った?

public class ImageButton extends JButton{

    public ImageButton(ImageIcon icon){
        setSize(icon.getImage().getWidth(null),icon.getImage().getHeight(null));
        setIcon(icon);
        setMargin(new Insets(0,0,0,0));
        setIconTextGap(0);
        setBorderPainted(true);
        setBackground(Color.black);
        setText(null);
    }

    public void setEnabled(Boolean b){
        if (b){
            setBackground(Color.black);
        } else {
            setBackground(Color.gray);
        }
        super.setEnabled(b);
    }
}
4

2 に答える 2