1

我正在尝试为JToggleButtons(特别是JCheckBoxes)编写一个撤消管理器。每个复选框都有一个项目侦听器,可将新编辑添加到撤消管理器。但是,当我尝试撤消选择时,该setSelected(boolean)方法会触发项目侦听器,将撤消添加为 another UndoableEdit,因此可以无限期地撤消。我对这个问题的解决方法是:

ItemListener[] ils = button.getItemListeners();
Arrays.stream(ils).forEach(button::removeItemListener);
button.setSelected(wasSelected);
Arrays.stream(ils).forEach(button::addItemListener);

这有效,但似乎有点混乱。有一个更好的方法吗?

4

0 回答 0