2011-11-01 17 views
5

Nếu ai đó chỉnh sửa nội dung ô của JTable và nhấn enter, nội dung sẽ được sửa đổi và lựa chọn bảng sẽ chuyển sang hàng tiếp theo.Cách để JTable ở trên ô đã chỉnh sửa

Có thể cấm JTable chuyển đến hàng tiếp theo sau khi ấn bản di động không?

Lý do là chương trình của tôi đồng bộ hóa một số tiện ích con khác khi chọn ô bằng cách sử dụng ListSelectionListener và tôi không muốn có hàng tiếp theo được chọn sau khi chỉnh sửa ô hiện tại.

Trả lời

7

Ràng buộc mặc định cho NhậpAction có tên selectNextRowCell. Để ghi đè mục nhập trong bản đồ nhập WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, bạn sẽ cần phải cung cấp doNothing()Action, như được đề xuất trong How to Use Key Bindings: How to Make and Remove Key Bindings.

+0

Đề xuất tuyệt vời! Công việc hoàn chỉnh cần làm là thêm một cuộc gọi vào table.getCellEditor(). StopCellEditing(); trong phương thức actionPerformed (...). Nếu không có cuộc gọi này, ô vẫn ở chế độ ấn bản khi người dùng nhấn enter. – Martin

+0

Điểm tốt; xem thêm [Sử dụng Trình chỉnh sửa để Xác thực Văn bản do Người dùng Nhập] (http://download.oracle.com/javase/tutorial/uiswing/components/table.html#validtext). – trashgod

1

Tôi không chắc chắn chính xác cách thực hiện việc này, nhưng tôi sẽ xem xét ActionMap. Bạn có thể sửa đổi hoặc thay thế Hành động được ánh xạ tới phím 'Enter'.

Chúc may mắn!