Enter 키를 JTable의 탭 키처럼 작동 시키길 원합니다. 이 문제는 이미 몇 시간 전에 물어 보았습니다.이 페이지에있는 해결책을 사용했습니다 : Use Enter Key Act Like Tab Key on jTable.다음에 초점을 맞추십시오 cellEditor를 선택하고 Enter 키를 누를 때 JTable에서 모든 텍스트를 선택하십시오
KeyStroke tab = KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0);
KeyStroke enter = KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0);
InputMap im = table.getInputMap(JTable.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT);
im.put(enter, im.get(tab));
그리고 솔루션은 매력처럼 작동합니다. Tab 키를 사용하여 때, 나는 JTable의의 changeSelection을 무시하고, 다음 셀에서 텍스트 필드의 텍스트 선택 SelectAll하는 셀 에디터의 getTableCellEditorComponent을 무시했습니다 cellEditor가
에JTable의
@Override
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();
}
}
의를
@Override
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
if (isSelected) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
textField.selectAll();
}
});
}
return super.getTableCellEditorComponent(
table, value, isSelected, row, column);
}
그래서 내가 다음 키를 누르면 다음 셀이 포커스되고 텍스트가 선택됩니다.하지만 입력 키를 누르면 셀이 느슨한 포커스를 처음 입력하고 두 번째 키는 다음 셀 포커스를 입력합니다. 그 안에있는 텍스트가 선택됩니다.
그래서 제 질문은 : 셀에서 느슨한 초점을 입력 한 다음 하나의 초점을 얻을 수 (그래서 정확히 탭 키와 같은 역할을) 알고하지 마십시오