2011-01-12 101 views
5

Tôi có một lớp con của JComboBox. Tôi cố gắng thêm một người nghe chính với mã sau đây.Phát hiện khi người dùng nhấn enter trong Java

 

     addKeyListener(new KeyAdapter() 
     { 
      public void keyPressed(KeyEvent evt) 
      { 
       if(evt.getKeyCode() == KeyEvent.VK_ENTER) 
       { 
        System.out.println("Pressed"); 
       } 
      } 
     }); 
 

Tuy nhiên, điều này không phát hiện chính xác khi người dùng nhấn phím. Nó thực sự không được gọi là ở tất cả. Tôi có thêm người nghe này sai không? Có cách nào khác để thêm nó?

+0

vui lòng cho chúng tôi mã đầy đủ, và tôi có thể biết lý do tại sao theo dõi nhập báo chí trong combobox là cần thiết? –

+0

chức năng dường như không có vấn đề gì, có thể cách bạn gọi nó có điều gì đó sai. Chúng tôi cần xem thêm mã –

+0

@ user489041, bạn không nên sử dụng KeyListener cho việc này. – camickr

Trả lời

13

Sự kiện chính không được kích hoạt trên chính ô đó, mà là các trình soạn thảo của nó. Bạn cần thêm keyListener vào trình chỉnh sửa của JComboBox chứ không phải hộp trực tiếp:

comboBox.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() 
    { 
     public void keyPressed(KeyEvent evt) 
     { 
      if(evt.getKeyCode() == KeyEvent.VK_ENTER) 
      { 
       System.out.println("Pressed"); 
      } 
     } 
    }); 

Chỉnh sửa: gọi phương thức cố định.

1

Đây không phải là cách tiếp cận phù hợp. Trình soạn thảo cho một JComboBox là một JTextField. Nếu bạn muốn xử lý phím Enter thì bạn thêm một ActionListener vào trường văn bản.

Luôn tránh sử dụng KeyListeners.

Edit:

comboBox.getEditorComponent().addActionListener(...); 
+1

Có thể cung cấp một số mã mẫu không? – user489041

+0

@ user489041, bạn đã bao giờ thêm một ActionListener vào một JButton chưa? Vâng mã là chính xác như nhau. Nếu bạn chưa đọc phần từ hướng dẫn Swing về "Cách viết một trình nghe hành động" (http://download.oracle.com/javase/tutorial/uiswing/TOC.html). – camickr

+0

Bạn cần comboBox.getEditor(). AddActionListener (...) – Alex

Các vấn đề liên quan