2013-03-01 29 views
0

我有一個文檔偵聽器,可以正常工作。但是,我想添加一些功能,以便當用戶點擊Enter鍵時,焦點轉移到另一個對象。我無法弄清楚如何捕捉這個。這裏是我的代碼:Java Swing:使用文檔偵聽器處理返回鍵

txtNum1.getDocument().addDocumentListener(new DocumentListener() { 

      @Override 
      public void insertUpdate(DocumentEvent e) { 
       setAnswer(e); 
      } 

      @Override 
      public void removeUpdate(DocumentEvent e) { 
       setAnswer(e); 
      } 

      @Override 
      public void changedUpdate(DocumentEvent e) { 
       setAnswer(e); 
      } 

      private void setAnswer(DocumentEvent e) { 
       if (txtNum1.getText().equals("")) { 
        num1 = 0; 
       } else { 
        num1 = Integer.parseInt(txtNum1.getText()); 
       } 
       calcAnswer(); 
       System.out.println(e); //trying to output the event 'Enter' 
      } 

我可以用一鍵收聽做到這一點,但我一直在罵這個網站關於使用這種方法之前,所以我想這個學習的正確方法。

謝謝!

編輯: 根據以下建議,我添加了下面的代碼,但它似乎沒有效果。任何人都可以看到我缺少的東西嗎?謝謝!

/* If the user hits the Enter key, we want the focus to shift to 
* the next text field */ 
txtNum1.addActionListener(new ActionListener() { 
    @Override 
    public void actionPerformed(ActionEvent e) { 
     txtNum2.requestFocus(); 
    } 
}); 
+0

我不得不承認,我會用一個關鍵的偵聽器來偵聽與文檔本身無關的關鍵事件(返回,轉義,功能鍵等) )...猜猜我現在也需要一個答案! – RudolphEst 2013-03-01 16:31:29

+0

如果您不使用JTextField,那麼解決方案是使用[Key Bindings](http://docs.oracle.com/javase/tutorial/uiswing/misc/keybinding.html)來監聽Enter鍵。 – camickr 2013-03-01 16:37:11

回答

5

在一個JTextField,你可以捕獲Enter鍵只需添加一個ActionListener。當用戶輸入時,輸入

+4

+1,因爲打字比我快:) – camickr 2013-03-01 16:35:40

+0

@camickr沒問題。有時恰好我們幾乎同時輸入相同的答案。 – 2013-03-01 16:39:12