いくつかの Swing コンポーネントを拡張し、その状態と対話するメソッドをオーバーライドしようとしています (JComboBox の setSelectedIndex、JCheckBox の setSelected など)。JCheckBox に問題があります。setSelected メソッドをオーバーライドしましたが、ユーザーが UI を介して JCheckBox の状態を変更したときに呼び出されないようです。メソッドを呼び出すことで JCheckBox の状態を変更できますが、GUI は別の方法で状態を変更しているようです。クラスでそのイベントをキャッチするにはどうすればよいですか? Swing の他のクラスでは、すべて問題なく、オーバーライドされたすべてのメソッドが正しく機能します。
public class MyCheckBox extends JCheckBox {
@Override
public void setSelected(boolean selected) {
//Method is not performed when MyCheckBox is clicked
super.setSelected(selected);
}
}
UP.: 「元に戻す/やり直し」アクションをサポートするコンポーネントのパッケージを作成しました。addUndoableEditListener(UndoableEditListener l) メソッドをすべてのコンポーネントに追加したので、実装はコンポーネント内に隠されています。そのため、アクション リスナーを使用する代わりに Swing コンポーネントを拡張します。