Tôi có một số xác thực mà tôi thực hiện khi người dùng nhấp vào một tab. Nếu xác thực == true thì cho phép tab hiển thị (hoặc chuyển sang). Ngay bây giờ tôi đang sử dụng sự kiện StateChanged để xác thực. Vấn đề là, khi bạn bấm vào một tab nó sẽ hiển thị các nội dung của tab và nếu xác nhận == false nó sẽ chuyển về tab trước đó. Tôi không muốn nó chuyển sang tất cả trừ khi xác nhận == đúng. Làm thế nào để làm điều này, tôi đang kiểm tra cho một sự kiện sai? Cảm ơn tất cả các bạnJava JTabbedPane cho phép Tab chuyển sang chỉ khi đúng
Trả lời
Thử ghi đè JTabbedPane.setSelectedIndex (chỉ mục int).
Giải pháp sạch hơn có thể là ghi đè 'DefaultSingleSelectionModel.setSelectedIndex (index)' và sử dụng mô hình cho JTabbedPane. Tuy nhiên, giải pháp sạch hơn sẽ được ghi đè lên 'DefaultSingleSelectionModel' để hỗ trợ' VetoableChangeListener'. – xmedeko
Hoàn toàn đồng ý: giải pháp xmedeki là saffer. – Zecas
Bạn có thể sử dụng phương thức tab.setEnabledAt (chỉ mục, sai) để tắt tab nếu validation = false và tab.setEnabledAt (index, true) để bật lại khi xác thực = true.
Chỉnh sửa: Vô hiệu hóa tab sẽ chuyển sang màu xám để người dùng không thể nhấp vào nó ở nơi đầu tiên, có nghĩa là bạn sẽ phải thực hiện kiểm tra xác thực trước khi người dùng nhấp vào tab.
- 1. Java: JProgressBar (hoặc tương đương) trong tiêu đề tab JTabbedPane
- 2. Thay đổi tab cấm trong JTabbedPane
- 3. Đặt kích thước của tab trong JTabbedPane
- 4. Thêm biểu tượng trên tab JTabbedpane
- 5. JTabbedPane tùy chỉnh giao diện tab
- 6. Đặt tác nhân người dùng trong httpclient Java và cho phép chuyển hướng đến đúng
- 7. JTabbedPane: biểu tượng ở phía bên trái của các tab
- 8. Cho phép phiên php chuyển sang tên miền phụ
- 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. Java - Chuyển đổi hình ảnh sang Base64
- 11. Java cho phép chuyển đổi ngầm của int sang phao. Tại sao?
- 12. Kiểm tra ràng buộc - chỉ cho phép một cột là đúng nếu cột khác là đúng
- 13. JTabbedPane: Các thao tác được thực hiện trước khi hiển thị tab đã chọn
- 14. Cách chuyển (đúng) từ startManagingCursor sang CursorLoader?
- 15. Phát hiện chuyển sang tab mới trong Mobile Safari
- 16. Chuyển sang tab cụ thể trong Vim như trong Firefox?
- 17. Di chuyển mã Java TreeMap sang Scala?
- 18. Chuyển từ .NET sang Java?
- 19. Chuyển đổi JavaScript sang Java
- 20. Chuyển đổi Java sang iOS
- 21. Dừng nhật thực chuyển sang tab Gỡ lỗi
- 22. Chuyển sang một tab cụ thể trong VIM
- 23. Chuyển từ tab sang thu gọn để đáp ứng
- 24. @throws trong Scala không cho phép gọi Java để bắt ngoại lệ đúng loại
- 25. cách chuyển hướng stdin sang java Runtime.exec?
- 26. Chuyển sang tab hoạt động cuối cùng trong VIM
- 27. Emacs Shift-Tab sang trái dịch chuyển khối
- 28. Chuyển đổi mẫu C++ bit sang Java
- 29. Bản đồ chuyển đổi tab trong vim sang tab nghịch đảo trong Vim
- 30. Chuyển đổi từ C++ sang Java
Cách UI/UX lý tưởng để thực hiện việc này sẽ là "vô hiệu hóa" tab đang được đề cập bằng cách sử dụng lệnh 'pane.setEnabledAt (index, false);' thay vì logic phức tạp trong sự kiện 'stateChanged'. –
Bạn có thể tiếp cận điều này bằng cách sử dụng 'CardLayout' thay vì' JTabbedPane' - để kiểm soát hoàn toàn thời điểm các lượt xem thay đổi. Sử dụng 'tab bị khóa' 'JTabbedPane' sẽ phản trực giác với tôi. –