2011-09-23 55 views

回答

7

一種方便的方法依賴於setDefaultButton(),在該example示出並在所提到How to Use Key Bindings

JFrame f = new JFrame("Example"); 
Action accept = new AbstractAction("Accept") { 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     // handle accept 
    } 
}; 
private JButton b = new JButton(accept); 
... 
f.getRootPane().setDefaultButton(b); 
+0

+1,我喜歡這種將ActionListener添加到按鈕的解決方案,以便在按下回車鍵時哪個文本字段具有焦點並不重要。 – camickr

4

添加ActionListener密碼字段組成:

下面的代碼產生此屏幕截圖:

screenshot

public static void main(String[] args) throws Exception { 

    JFrame frame = new JFrame("Test"); 
    frame.setLayout(new GridLayout(2, 2)); 

    final JTextField user = new JTextField(); 
    final JTextField pass = new JTextField(); 

    user.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      pass.requestFocus(); 
     } 
    }); 
    pass.addActionListener(new ActionListener() { 
     @Override 
     public void actionPerformed(ActionEvent e) { 
      String username = user.getText(); 
      String password = pass.getText(); 

      System.out.println("Do auth with " + username + " " + password); 
     } 
    }); 
    frame.add(new JLabel("User:")); 
    frame.add(user); 

    frame.add(new JLabel("Password:")); 
    frame.add(pass); 

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 
} 
+0

+1,actionlistener是要走的路。 – aioobe

+0

ActionListener爲什麼只添加到密碼字段?如果用戶回到名稱字段並且用戶輸入該怎麼辦? – camickr

+0

@camickr:?有兩個動作監聽器?此外,這只是一個示例,如何使用它們。 – dacwe