有沒有辦法查看究竟觸發了一個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