То, что я хочу сделать, - это изменение ячейки (фокус), в следующей выбранной ячейке будет выделен весь текст, готовый для того, чтобы пользователь полностью изменил его.
Решение зависит от вашего точного требования. В JTable есть средство визуализации и редактор.
Визуализация обычно просто показывает текст в ячейке. Если вы хотите заменить текст, когда начинаете печатать, вам нужно сделать две вещи:
а) изменить средство визуализации, чтобы отображать текст в «выбранном» состоянии, чтобы пользователь знал, что ввод символа удалит существующий текст
б) изменить редактор, чтобы выбрать весь текст, когда он вызывается
Этот подход является относительно сложным, поскольку вам потребуется пользовательский рендерер для каждого типа данных в вашей таблице (т. Е. String, Integer).
Или другой подход состоит в том, чтобы автоматически переводить каждую ячейку в режим редактирования, когда она получает фокус, и поэтому вам нужно всего лишь изменить редактор, чтобы выделить текст.
Этот подход прост, как вы можете просто сделать:
JTable table = new JTable(data, columnNames)
{
// Place cell in edit mode when it 'gains focus'
public void changeSelection(
int row, int column, boolean toggle, boolean extend)
{
super.changeSelection(row, column, toggle, extend);
if (editCellAt(row, column))
{
Component editor = getEditorComponent();
editor.requestFocusInWindow();
((JTextComponent)editor).selectAll();
}
}
};