2010-03-02 40 views
7

Ví dụ: giả sử tôi có một loạt các nút kiểu thanh công cụ ở phía trên cùng của cửa sổ chính của ứng dụng. Tôi muốn đính kèm một bản ghi nhớ cho một trong số đó chỉ là một phím bấm đơn, như F3.Java Swing: Tôi có thể đặt một nút ghi nhớ không yêu cầu nhấn alt không?

Khi bạn đặt chú thích thành KeyEvent.VK_F3, người dùng phải nhấn Alt + F3.

Nếu bạn có một mục menu, bạn có thể đặt một máy gia tốc, thay vì ghi nhớ và chọn có sử dụng một khóa meta hay không. Tuy nhiên, các nút không cho phép bạn đặt máy gia tốc.

Có cách nào để bật meta-key cho nút nhớ không?

Trả lời

4

Actions có thể liên kết một đoạn mã với một mục menu, một phím tắt, một nút và bất kỳ thứ gì khác mà bạn quan tâm.

Nói chung, đừng nghĩ mã của bạn được gắn với một sự kiện/nhấn phím cụ thể - và không sử dụng các lớp bên trong ẩn danh. Thay vào đó, hãy sử dụng các lớp thực sự nơi mã của bạn có thể được sử dụng lại cho các loại thứ khác nhau. Mẫu đó được lớp Hành động sử dụng đưa ra một số ví dụ điển hình về điều này.

3

Phía sau hậu trường, cho dù bạn sử dụng máy gia tốc hay bộ ghi chú trên một thành phần, phương pháp sẽ tạo ra một Key Binding cho bạn.

Vì vậy, không có gì ngăn bạn ràng buộc KeyStroke và Hành động đối với bất kỳ thành phần nào bạn muốn và tạo thủ công Ràng buộc khóa. Nó thậm chí có thể là một thành phần không có phương thức setMNemonic (...).

0

Bạn có chắc chắn rằng các máy gia tốc không thể được xác định trên các nút nếu nút được cấu hình bằng một hành động? (. Tôi biết điều này là sự thật tại một thời điểm, nhưng tôi nghĩ điều này có thể khác nhau trong các phiên bản sau này của Java)

Trong mọi trường hợp, đây là một phương pháp để thiết lập nó vào một nút:

button.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(myKeyStroke, "actionName"); 
button.getActionMap().put("actionName", myAction); 

Trong trường hợp myKeyStroke là một phím tắt như F3, "actionName" là một nhãn (String), và myAction là hành động mà nó gọi.

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