我有这个:
public void actionPerformed1(ActionEvent e) { ... }
public void actionPerformed2(ActionEvent e) { ... }
public void actionPerformed3(ActionEvent e) { ... }
JButton b = new JButton();
b.addActionListener(this::actionPerformed1);
b.addActionListener(this::actionPerformed2);
b.addActionListener(this::actionPerformed3);
代码始终按顺序执行动作3,然后依次执行2和1。
是否可以在不引发运行时异常的情况下停止队列的执行?
感谢您的时间。
答案 0 :(得分:2)
我认为不使用Exception
就无法停止它。如果查看JButton
中触发ActionEvent
(sb)时执行的代码,您会发现它只是在for循环中迭代已注册{{1}数组的副本}。
因此,您可以尝试在回调方法中取消所有ActionListeners
的注册,但这无济于事,因为循环使用本地副本。而且您也不能从回调中递增变量Actionlistener
。
i
不过,您可以在类中使用一个公共变量来向您的回调方法发出信号,即它们应该只返回,但这不会避免执行,而只是执行会过早决定的代码返回。