JToggleButton
s (特にJCheckBox
es)用の取り消しマネージャーを作成しようとしています。各チェック ボックスには、元に戻すマネージャーに新しい編集を追加するアイテム リスナーがあります。ただし、選択を元に戻そうとすると、setSelected(boolean)
メソッドは項目リスナーをトリガーし、元に戻すを別の として追加するUndoableEdit
ため、無期限に元に戻すことができます。この問題に対する私の回避策は次のとおりです。
ItemListener[] ils = button.getItemListeners();
Arrays.stream(ils).forEach(button::removeItemListener);
button.setSelected(wasSelected);
Arrays.stream(ils).forEach(button::addItemListener);
これは機能しますが、少し面倒です。これを行うより良い方法はありますか?