2013-02-05 45 views
8

Tôi có một ứng dụng Java Swing trong IDE NetBeans.KeyTypedEvent Mã khóa KeyEvent luôn là 0?

tôi đã thực hiện một hình thức và gắn một KeyListener để điều khiển khác nhau của tôi như vậy:

jButton1.addKeyListener(new java.awt.event.KeyAdapter() { 
     public void keyTyped(java.awt.event.KeyEvent evt) { 
      keyTypedEvent(evt); 
     } 
    }); 

keyTypedEvent được định nghĩa như vậy:

private void keyTypedEvent(java.awt.event.KeyEvent evt) 
{        
System.out.println(evt); 
appendDisplay(String.valueOf(evt.getKeyChar())); 
} 

Tôi đã thêm một println đến evt để xem những gì xảy ra và để xác minh rằng trình khóa của tôi không hoạt động. Khi tôi xây dựng và chạy ứng dụng của tôi, tôi nhận ra rằng sản lượng luôn dường như có một keycode = 0

Để xác minh điều này, tôi đã thay đổi println tôi để được evt.getKeyCode() và nó luôn luôn trở về 0.

tôi có thể hoàn toàn hiểu sai những gì keyCode không, nhưng tôi nghĩ rằng nó sẽ coorespond với các giá trị trong tài liệu hướng dẫn của Oracle ở đây:

http://docs.oracle.com/javase/7/docs/api/constant-values.html#java.awt.event.KeyEvent.VK_ESCAPE

Ví dụ, VK_ESCAPE có giá trị 27.

+0

Không sử dụng KeyListener. Sử dụng các liên kết DocumentListener hoặc Swing Key. –

Trả lời

22

Sự kiện keyTyped() chỉ được sử dụng cho các khóa tạo đầu vào ký tự. Nếu bạn muốn biết khi nào bất kỳ phím nào được nhấn hoặc nhả, bạn cần triển khai keyPressed() hoặc keyReleased().

Từ KeyEvent API:

"gõ phím" sự kiện là cấp cao hơn và thường không phụ thuộc vào nền tảng hoặc bàn phím bố trí. Chúng được tạo ra khi một Unicode nhân vật được nhập vào, và là cách ưa thích để tìm hiểu đầu vào khoảng nhân vật ....

Đối với phím được nhấn và sự kiện quan trọng được phát hành, phương pháp getKeyCode trả keyCode của sự kiện. Đối với các sự kiện được nhập chính, phương thức getKeyCode luôn trả về VK_UNDEFINED.

0

Nó rất phụ thuộc vào khóa đã được nhấn. Có thể bạn cần KeyListener với ghi đè phương thức keyPressed, vì keyTyped không được kích hoạt trên các ký tự không thể in được.

Nhìn vào sự khác biệt giữa keyTypedkeyPressed đây: KeyListener, keyPressed versus keyTyped

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