有没有办法查看究竟触发了一个JFrame中的WindowClosing事件?目前的getSource(),它似乎只能返回JFrame中:检查什么触发了WindowClosing事件
public void windowClosing(WindowEvent e) {
JOptionPane.showMessageDialog(null, "event source: " + e.getSource(), "Test", JOptionPane.OK_OPTION);
methodA();
}
我想知道这是由于方法Dispose()触发的windowClosing事件。因此,如果单击一个调用methodA()然后dispose()的按钮,dispose()将触发一个关闭事件,该事件被定义为调用methodA()。这导致methodA()被调用两次,我不希望这样。
public void actionPerformed(ActionEvent e) {
if (e.getSource() == confirmButton) {
methodA();
dispose(); //this will trigger window closing and call methodA() again
}
}
所以我想解决这个问题的办法是检查是否命名为“确认”的特定按钮触发结束活动之一。然后我不想调用methodA(),这样它就不会被调用。
如果这是不可能的,我可以至少检查帧中的close(X)按钮是否是调用窗口关闭事件的按钮?
感谢
'//这将触发窗口关闭,并调用了methodA()again'设置一个布尔标志'alreadyDoneMethodA'并检查它是假的在调用'methodA'之前,在完成时将其设置为true。 – 2014-11-08 15:28:44
@AndrewThompson恩,好的没有想到这一点。如果一切都失败了,我会尝试。虽然没有办法检查哪个按钮可以调用该事件吗? – sparta123 2014-11-08 15:30:16
*“是否没有办法检查哪个按钮调用了该事件?”*您可以创建一个堆栈跟踪并迭代跟踪的元素以在到达那里之前查看代码行。但那会是一种破坏.. *“没有想到这一点,如果一切都失败了,我会尝试的。”*您似乎希望在按照其他几十种方式进行攻击之前调查黑客行为程式。 – 2014-11-08 15:32:40