Trong chương trình swing của tôi, tôi có một JTextField và một JButton. Tôi muốn, một khi người dùng nhấn phím "enter", actionListener của JButton chạy. Làm thế nào tôi sẽ làm điều này? Cảm ơn trước.Làm cách nào để liên kết nhấn "enter" bằng cách nhấp vào nút?
Trả lời
JRootPane có phương thức setDefaultButton (nút JButton) sẽ thực hiện những gì bạn muốn. Nếu ứng dụng của bạn là JFrame, nó triển khai giao diện RootPaneContainer và bạn có thể lấy ngăn gốc bằng cách gọi hàm getRootPane() trên JFrame, sau đó gọi setDefaultButton trên ngăn gốc đã được trả về. Kỹ thuật tương tự hoạt động cho JApplet, JDialog hoặc bất kỳ lớp nào khác thực hiện RootPaneContainer.
Điều này chỉ hoạt động sau khi bạn đã khởi tạo thành phần mà bạn dự định .getRootPane() bật không? Nếu vậy, điều đó có nghĩa là tôi không thể xây dựng trực tiếp điều này vào hàm tạo của thành phần đó, đúng không? –
@LucasMorgan: bạn cần JRootPane để làm việc này và điều đó có ý nghĩa. Khác bạn có thể cần phải sử dụng các ràng buộc chính. –
có một ví dụ ở đây
http://www.java2s.com/Code/Java/Swing-JFC/SwingDefaultButton.htm
đây là những gì bạn cần: rootPane.setDefaultButton (button2);
Loại bỏ các ActionListeners. Đó là phong cách cũ để làm người nghe. Tốt nghiệp lớp Hành động. Bí quyết là hiểu InputMaps và ActionMaps hoạt động. Đây là một tính năng độc đáo của Swing mà thực sự là khá đẹp:
http://download.oracle.com/javase/tutorial/uiswing/misc/keybinding.html
Đây là cách bạn làm điều đó:
JPanel panel = new JPanel();
panel.setLayout(new TableLayout(...));
Action someAction = new AbstractAction("GO") {
public void actionPerformed() {
}
};
InputMap input = panel.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
input.put(KeyStroke.getKeyStroke("enter", "submit");
panel.getActionMap().put("submit", someAction);
panel.add(button = new JButton(someAction));
panel.add(textField = new JTextField());
Sử dụng WHEN_ANCESTOR_OF_FOCUSED_COMPONENT cho phép bảng điều khiển để nhận các sự kiện bàn phím từ bất kỳ đó là con (tức là tổ tiên). Vì vậy, không có vấn đề gì thành phần đã tập trung miễn là nó bên trong bảng điều khiển mà tổ hợp phím sẽ gọi bất kỳ hành động đăng ký dưới "gửi" trong ActionMap.
Điều này cho phép bạn sử dụng lại Tác vụ trong menu, nút hoặc tổ hợp phím bằng cách chia sẻ chúng.
Ràng buộc khóa rất hữu ích trong nhiều trường hợp nhưng không phải là một chút quá mức cần thiết cho vấn đề hiện tại khi bạn có thể sử dụng các giải pháp đơn giản khác được cung cấp (có khả năng sử dụng khóa ràng buộc trong nền). –
Tùy thuộc vào tác giả đã không chỉ định nếu điều này là trên một hộp thoại của chính nó, hoặc giao diện người dùng chính. Sử dụng setDefaultButton() giả định đó là điều duy nhất trên một hộp thoại. Chưa kể đến các hành động hiểu biết và cách chúng liên quan đến phần còn lại của bộ công cụ Swing sẽ đưa bạn vào các chủ đề khác như ràng buộc trình đơn, tổ hợp phím toàn cục và tùy chỉnh ánh xạ khóa cho các thành phần mặc định. Thêm vào đó, bất cứ ai sử dụng ActionListeners cần phải nhận thức được Hành động vượt trội trong mọi trường hợp. – chubbsondubs
"bất kỳ ai sử dụng ActionListeners cần phải lưu ý Hành động vượt trội trong mọi trường hợp." - Hm, và tôi được dạy rằng mọi sự khái quát đều sai. :) –
- 1. C# Làm cách nào để nhấp vào nút bằng cách nhấn Enter khi hộp văn bản có tiêu điểm?
- 2. Làm cách nào để liên kết phím Enter bằng nút trên trang aspx?
- 3. thực hiện nút gửi phản hồi để nhấn enter và nhấp vào
- 4. Nhấn phím Enter thay vì Nhấp vào nút với Giày (Ruby)
- 5. Chọn nút trong khi nhấn nút enter
- 6. Đóng một hộp thoại bằng cách nhấn Enter
- 7. Tăng số bằng cách nhấp vào nút
- 8. Gửi bằng cách nhấn enter ở dạng cửa sổ
- 9. Làm cách nào để chuyển đổi các tab trong jTabbedPane bằng cách nhấp vào một nút?
- 10. Làm thế nào để thêm hàng bảng ASP.NET mới bằng cách nhấn vào nút?
- 11. Làm cách nào để thêm hàng bảng html phụ khi nhấp vào nút bằng jQuery?
- 12. sự kiện nhấp vào liên kết jquery với nhiều nút
- 13. cách lấy trọng tâm vào nút nhấn phím "enter" trong bảng phím
- 14. Có cách nào để tránh rằng việc gửi liên kết của knockoutjs gửi biểu mẫu khi nhấn phím enter?
- 15. jQuery: Mở cửa sổ Tải tệp lên bằng cách nhấn vào liên kết hoặc hình ảnh.?
- 16. Liên kết UIWebView Nhấp vào
- 17. Nhấn Enter Luôn gửi biểu mẫu
- 18. Cách xác nhận nhấp vào liên kết bằng cách sử dụng jQuery
- 19. Selenium nhấp vào liên kết
- 20. Nhấp vào nút hủy showInputDialogue
- 21. Tôi làm cách nào để mô phỏng một nhấp chuột vào một thẻ liên kết?
- 22. Làm cách nào để chặn nhấp chuột vào liên kết trong UITextView?
- 23. Làm cách nào để chạy mã PHP khi người dùng nhấp vào một liên kết?
- 24. Làm cách nào để gửi dữ liệu đến trang PHP khi nhấp vào một Liên kết?
- 25. Làm cách nào để chặn nhấp chuột vào liên kết trong TextView?
- 26. Cách đóng cửa sổ Tkinter bằng cách nhấn một nút?
- 27. jquery contenteditable enter "Làm cách nào để kích hoạt chuyển đổi khi người nào đó nhấn enter?"
- 28. Làm cách nào để tắt tính năng tự động gửi khi nhấn phím enter?
- 29. cách nhấp vào liên kết bằng cách sử dụng cURL.? Ví dụ:
- 30. Làm thế nào để nhấn một nút hai lần bằng cách sử dụng Google UiAutomator?
getRootPane(). SetDefaultButton (JButton defaultButton); – ashubuntu