[英]DocumentListener or KeyListener
正是在評論中提到了這個問題 ,並在回答這個問題說documentListener
或documentFilter
應使用,而不是keyListener
。 為什么是這樣?
前幾天,我在一個簡單的Hangman游戲中編寫了類似以下代碼的代碼:
public class Hangman extends JFrame implements KeyListener, ActionListener{
private JTextField guess;
private JButton b1;
private void addComponentsToPane(){
b1 = new JButton("New Game");
b1.addActionListener(this);
guess = new JTextField(2);
guess.addKeyListener(this);
稍后在代碼中,我使用keyTyped(KeyEvent ke)
從JTextField
和JButton
actionPerformed(ActionEvent ae)
獲取文本輸入。
我的問題是,應該使用documentListener
/ documentFilter
而不是keyListener
, 為什么或為什么不呢?
我本人會使用DocumentFilter,因為這樣可以忽略非字母輸入。 而且我也支持凱文提到的所有觀點。 他的答案加1+。
我將回答一個問題:如果在使用鼠標中鍵作為“粘貼”命令的系統上運行程序,應該怎么辦? 例如,某些版本的Linux會這樣做。
在這種情況下,用戶可以將文本粘貼到JTextField中,而您的程序將無法檢測到它。
有很多類似的情況,因此,盡管您的KeyListener在大多數情況下都可以使用,但您不應依賴它來處理重要的事情-否則,您將有很多困惑和煩惱的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.