Я пытаюсь реализовать JTable, который должен соблюдать следующие правила: клеткиJTextField.selectAll() работает странно
- только в 3'rd колонке может быть отредактирована.
- При двойном нажатии любой ячейки в строке X начинается 3-й столбец строки X.
- Всякий раз, когда вы начинаете редактировать ячейку, будет выбран текст внутри нее.
У меня есть FileTable, который расширяет JTable. В его конструктору У меня есть эти строки:
getColumnModel().getColumn(2).setCellEditor(new FileTableCellEditor());
addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e){
if (e.getClickCount() == 2){
int row = rowAtPoint(e.getPoint());
editCellAt(row, 2);
}
}
});
Мой FileTableCell редактор выглядит следующим образом:
public class FileTableCellEditor extends DefaultCellEditor {
public FileTableCellEditor() {
super(new JTextField());
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
final JTextField ec = (JTextField) editorComponent;
String textValue = (String)value;
ec.setText(textValue);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ec.selectAll();
}
});
return editorComponent;
}
}
Моя проблема, когда я дважды щелкните на ячейке, которая не из колонки 3'rd, The текст, отредактированный на 3-м столбцах, не выделяется как выделенный текст.
picture http://www.nispahit.com/stack/tableNotHighlight.png
Это очень странно для меня, потому что я знаю, что текст является выбран. Когда я пишу что-то, он удаляет текст, который был в этой ячейке раньше. Это просто не то, что выбрано. Как ни странно, когда я дважды щелкаю по ячейке 3-й колонки, она делает выделите выделение.
picture http://www.nispahit.com/stack/tableHighlight.png
Может кто-нибудь налить свет?
Спасибо!
Для лучшей помощи попробуйте опубликовать [SSCCE] (http://www.sscce.org) – nachokk
Второй момент не ясен, хотя, как вы читаете больше (до момента, когда код действительно), только тогда вы осознаете , что на самом деле должно произойти в точке номер 2 :-) +1 для красиво отредактированного вопроса. –
Так что, кажется, имеет значение, выбрана ли ячейка - попробуйте выбрать ячейку перед началом редактирования. – Holger