我正在開發一個應用程序,我希望用戶可以通過更新JTextArea的內容來觸發某些事件,也可以通過按JButton來手動觸發。在DocumentListener中使用動作
我已經完成了第一部分,使用DocumentListener並將相關代碼放入其insertUpdate
方法中。
我以前沒有用過Action
,但是我聽說它們對於需要某些東西被多個控件觸發的情況很有用。是否有可能從DocumentListener觸發操作?是不是一個好主意,或者我應該把我的代碼放在一個普通的方法中?
(在構造函數):
textAreaInput.getDocument().addDocumentListener(new DocumentListener() {
public void insertUpdate(DocumentEvent e) {
// do something
}
public void removeUpdate(DocumentEvent e) {}
public void changedUpdate(DocumentEvent e) {}
});
和操作,這是一個字段:
Action doSomething = new AbstractAction("Do Something!") {
@Override
public void actionPerformed(ActionEvent e) {
// do it
}
};
澄清:
的JTextArea中會收到在粘貼的文本由我想要自動解析的用戶提供。解析依賴於GUI中別處設置的其他值;如果用戶更改這些其他值,他可能需要重新解析文本,因此需要通過按下按鈕來執行相同的操作。
「行動」的好處通常超過輕微的邊際開銷,如[這裏]所述(http://stackoverflow.com/questions/7253712/java-swing-using-actionmap/7255711#7255711)。 – trashgod
你的意思是在insertUpdate方法中添加類似'doSomething.actionPerformed(new ActionEvent(???))'的東西? –
是的;但是,正如@camickr指出的那樣,你必須決定是否有意義。爲什麼不只是一個普通的方法? – trashgod