2012-02-28 58 views
9

Tôi muốn biết cách điều chỉnh thứ tự Tab trong giao diện Swing. Tôi tìm thấy một ví dụ và nó cho thấy phương pháp này nên làm các trick nhưng có vẻ như nó không được chấp nhận và không hoạt động.Làm cách nào để đặt Thứ tự Tab trong Swing Java?

getCombox("cmbFrom").setNextFocusableComponent(getCombox("cmbTo")); 

Lưu ý: - Phương thức dưới đây trả về đối tượng Combox với tên Đối số. Nếu ai đó biết làm thế nào để làm điều đó với Netbeans IDE nó sẽ là tuyệt vời. Tôi tìm thấy một cách để làm điều đó trong Eclipse WindowBuilder nhưng không phải trong Netbeans IDE. Cảm ơn bạn.

getCombox(String s) 

Trả lời

14

Bạn có thể sử dụng setFocusTraversalPolicy trong vùng chứa của mình.

FocusTraversalPolicy lớp là trừu tượng và bạn cần triển khai một vài phương pháp sẽ trả về thứ tự lấy nét thành phần của vùng chứa. Nó sẽ hoạt động với Tab và Shift + Tab.

+1

Tốt nhất là liên kết tới phiên bản JavaDocs mới nhất. Tôi đã chỉnh sửa câu trả lời của bạn để trỏ đến J2SE 7. Để biết các mẹo về cách nhận liên kết đến các tài liệu mới nhất, hãy xem [điểm 2 lợi thế] (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7090875) . –

+3

+1 cho FTP, nhưng tốt hơn không nên bắt đầu từ FocusTraversalPolicy, có quá nhiều thứ có thể sai. Bắt đầu tốt hơn từ bất kỳ triển khai cụ thể nào (fi SortingFocusTraversalPolicy) và ghi đè khi cần (trình cắm thêm tùy chỉnh fi) một tuỳ chọn – kleopatra

+0

fyi, chỉ cần kiểm tra hướng dẫn http://docs.oracle.com/javase/tutorial/uiswing/misc/ focus.html # customFocusTraversal - chương đó vẫn còn tệ như lúc bắt đầu. Để xem hành vi sai trái của việc triển khai quá ngây thơ, hãy thay thế f.i. textField tf4 với comboBox có thể chỉnh sửa ... – kleopatra

3

nếu bạn đang sử dụng netbeans, hãy chọn thành phần đầu tiên mà bạn muốn trở thành phần tử được tập trung đầu tiên và trong thuộc tính đảm bảo focusCycleRoot được chọn. và trong nextFocusableComponent chọn các thành phần tiếp theo mà bạn muốn đạt được tập trung khi bạn nhấn tab và đi trước một cách tương tự cho thành phần khác

Lưu ý: không kiểm tra focusCycleRooot cho thành phần khác

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