Tôi có nhiều trình chỉnh sửa tùy chỉnh cho một JTable và không thể nói rằng khả năng sử dụng, đặc biệt liên quan đến chỉnh sửa bằng bàn phím, thiếu.JTable với trình chỉnh sửa phức tạp
Lý do chính của việc này là biên tập viên của tôi luôn tạo ra với một (mặc dù thường phức tạp hơn) tình hình tương tự như sau:
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
JPanel container = new JPanel();
container.setLayout(new BorderLayout());
container.add(field, BorderLayout.CENTER);
field.setText((String) value);
container.add(new JButton("..."), BorderLayout.EAST);
return container;
}
tức là một bảng điều khiển với nhiều hơn một thành phần bên trong. Trình soạn thảo văn bản thực tế là một hậu duệ của thành phần được trả về làm trình soạn thảo. Vì vậy, hiển thị các vấn đề sang một bên, từ những gì tôi có thể nói, JTable đang tập trung thành phần được trả về theo phương pháp getTableCellEditorComponent
. biên tập viên.
Có anyway tôi có thể thông báo cho JTable rằng trình biên tập "thực sự" là JTextfield không? Thêm hacky requestFocusInWindow
vào thành phần chính xác không đủ khi nhấn phím sẽ không được truyền.
Có, cảm ơn. Tôi chỉ có một số lời khuyên tương tự trên diễn đàn mặt trời. http://forums.sun.com/thread.jspa?threadID=5368525 –