2011-12-14 38 views
6

Tôi là một lập trình viên Java có kinh nghiệm, nhưng một newbie Swing vì vậy hãy chịu với tôi.Làm thế nào để tập trung vào JPopupMenu

Tôi muốn có một JPopupWindow có tiêu điểm bàn phím. Tôi muốn trả lời các phím mũi tên, thoát (để đóng menu) và Enter (để gọi mục). Tôi phải thêm một KeyListener vào trình đơn và mã tất cả điều này bản thân mình, hoặc là có một số loại "chế độ" tôi có thể thiết lập để kích hoạt hành vi này mà có vẻ như nó phải là tiêu chuẩn.

Phần hướng dẫn Swing tiêu chuẩn trên JPopupMenus chỉ nói về các bộ ghi chú và bộ gia tốc. Tôi không đặc biệt muốn những người đó.

Khó tin rằng điều này hoàn toàn trái với hạt của JPopupMenu.

Cách tốt nhất để có được thứ gì đó như tôi muốn triển khai là gì?

Trả lời

6

Khi bạn thực hiện jpopupMenu.show(Component invoker, int x, int y), nó sẽ tự động trả lời bàn phím theo ý bạn. Nếu điều này không làm việc thì bạn có thể cần phải sửa chữa một số vấn đề khác tức là một số thành phần khác được giật đi tập trung từ menu khi nó không nên, vv

+0

hmm. Tôi đã sử dụng setVisible (true) thay vì show() nhưng tôi thấy rằng show() bị phản đối vì lợi dụng setVisible()/ –

+0

Tôi đã nói về phương thức show (Component invoker, int x, int y) mà tôi đã sử dụng ma cua toi. Xin lỗi về sự nhầm lẫn. –

+0

Đó là câu trả lời. Tôi đã không gắn liền với một thành phần. Câu trả lời của Trashgod cũng cần thiết để làm điều đó. Cám ơn hai bạn. –

3

Thay vì KeyListener, tôi muốn khuyên bạn nên thêm Action trường để JPopupMenu của bạn. Sử dụng setComponentPopupMenu() để thêm cửa sổ bật lên vào bảng điều khiển của bạn.

+1

cảm ơn, đầu vào của bạn, cùng với AKJ ở trên, đã làm việc này. –

+0

Tuyệt vời; để tham khảo, có một ví dụ được cập nhật gần đây [ở đây] (http://stackoverflow.com/a/5129757/230513). – trashgod

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