监听器在行动之前运行

时间:2013-05-21 15:21:45

标签: java swing jpopupmenu

我制作了自定义JComboBox。为此,我使用的是包含JPopupMenu的{​​{1}}。但显然JCheckBoxMenuItem PopupMenuListenerpopupMenuWillBecomeInvisible更改之前正在运行。任何想法如何解决? 我不想将监听器添加到JCheckBoxMenuItem

JCheckBoxMenuItem

1 个答案:

答案 0 :(得分:3)

一个“可能”的解决方案与kludge相比,是使用您的popupMenuWillBecomeInvisible(...),但将状态检查排队到Swing事件队列中,以便在事件队列中当前所有项目都具有之后执行其操作完了。但是,这并不能保证有效。

@Override
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {

  SwingUtilities.invokeLater(new Runnable() {
     public void run() {
        System.out.println(i1.isSelected());
        System.out.println(i2.isSelected());
        System.out.println(i3.isSelected());
     }
  });
}