更改JToggleButton(例如JCheckBox)的选定状态而不触发其项侦听器

时间:2016-03-05 14:26:27

标签: java swing undo jcheckbox jtogglebutton

我试图为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);

这有效,但看起来有点凌乱。有更好的方法吗?

0 个答案:

没有答案