2008-12-18 25 views
5

Tôi có một bảng với một TableCellEditor tùy chỉnh (mở rộng DefaultCellEditor) với một JFormattedTextField làm thành phần trình soạn thảo.Làm thế nào để ngừng chỉnh sửa với DefaultCellEditor khi một JBtton riêng được nhấn

Bây giờ tôi gặp sự cố: khi tôi nhấn một nút riêng trong khi chỉnh sửa. Khi nút được nhấn, trình chỉnh sửa vẫn "mở và hoạt động" trong khi tôi muốn nó dừng chỉnh sửa để các thay đổi được thực hiện sẽ có sẵn cho các thao tác do nút gây ra.

Vậy làm thế nào để dừng chỉnh sửa khi nhấn nút riêng biệt. Tôi đã thử setFocusLostBehavior (JFormattedTextField.COMMIT) cho JFormattedTextField nhưng dường như nó không có hiệu lực.

Hope ai đó có một số ý tưởng tốt =)

Trả lời

12

Bạn có thể thử

jtable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);

+0

Tài liệu này được viết ở đâu? –

+0

Tôi không biết. Tôi sợ nó khá không có giấy tờ. :( – asalamon74

3

Cảm ơn asalamon74, rằng hoạt động khá độc đáo.

Có tranh luận về điều này tại Cơ sở dữ liệu lỗi của Sun: Bug 4724980: JTable: Add API to control what happens to edits when table loses focus. (cũng tìm thấy các mục lỗi khác). Các terminateEditOnFocusLost bật "cam kết hoặc hủy bỏ" hành vi có thể được nhìn thấy tại các nguồn Java tại lớp JTable $ CellEditorRemover

Và có, nó hơi lạ mà nó không được tài liệu tại các API vv .. .

+0

Ngày gửi của cuộc tranh luận là 01-AUG-2002. Vì vậy, đó là một vấn đề dài, và vẫn chưa thực sự được ghi nhận. – asalamon74

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