2013-09-25 33 views
6

Tôi muốn hỏi bạn có thể nhận được sự kết hợp mã phím của nhiều khóa hay không. Ví dụ tôi có thể lấy mã chủ chốt từ ví dụ này:Nhận mã kết hợp chính

 public void handle(KeyEvent event) { 
      if (event.getCode() == KeyCode.TAB) { 
     } 

Nhưng làm thế nào tôi có thể lấy mã chủ chốt của ví dụ này:

textField.setText(""); 
       // Process only desired key types 
       if (event.getCode().isLetterKey() 
         || event.getCode().isDigitKey() 
         || event.getCode().isFunctionKey()) { 
        String shortcut = event.getCode().getName(); 
        if (event.isAltDown()) { 
         shortcut = "Alt + " + shortcut; 
        } 
        if (event.isControlDown()) { 
         shortcut = "Ctrl + " + shortcut; 
        } 
        if (event.isShiftDown()) { 
         shortcut = "Shift + " + shortcut; 
        } 
        textField.setText(shortcut); 
        shortcutKeyEvent = event; 
       } else { 
        shortcutKeyEvent = null; 
       } 

Có thể để có được sự kết hợp khóa mã các phím Ctrl + Tab hoặc Ctrl + A?

Trả lời

11

Không, xử lý keyEvent chỉ có một chính KeyCode, ví dụ mã này

public void handle(KeyEvent event) { 
    if (event.getCode() == KeyCode.TAB) { 
    } 
} 

sẽ xử lý TAB, ALT + TAB, hoặc CTRL + TAB vv Nếu bạn chỉ quan tâm đến CTRL + TAB, bạn có 2 lựa chọn:
1) sử dụng isControlDown()

public void handle(KeyEvent event) { 
    if (event.getCode() == KeyCode.TAB && event.isControlDown()) { 
    } 
} 

2) sử dụng KeyCodeCombination

final KeyCombination kb = new KeyCodeCombination(KeyCode.TAB, KeyCombination.CONTROL_DOWN); 
... 
... 
public void handle(KeyEvent event) { 
    if (kb.match(event)) { 
    } 
} 
+0

Cũng xem xét 'KeyCombination.SHORTCUT_DOWN'. "Bằng cách sử dụng công cụ sửa đổi phím tắt, nhà phát triển có thể tạo các lối tắt độc lập nền tảng". – trashgod

+1

Vấn đề là vì nó cũng hoạt động khi bạn chỉ nhấn Tab mà không có Control_Down. Làm thế nào để làm cho Handler mà sẽ làm việc chỉ khi cả hai phím được nhấn? –

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