1
일부 열을 편집 할 수없는 JTable이 있습니다. isCellEditable 메서드를 재정의하면됩니다. 이제이 열의 셀을 선택 취소 할 수있게하려고합니다. 사용자가 탭 키를 사용하여 셀을 통과하는 경우 이러한 편집 할 수없는 셀을 "건너 뛰기"에 집중하려고합니다. 이 일이 어떻게 이루어 졌는지 말해 주실 수 있습니까? 감사.열의 셀을 선택 취소하는 방법
일부 열을 편집 할 수없는 JTable이 있습니다. isCellEditable 메서드를 재정의하면됩니다. 이제이 열의 셀을 선택 취소 할 수있게하려고합니다. 사용자가 탭 키를 사용하여 셀을 통과하는 경우 이러한 편집 할 수없는 셀을 "건너 뛰기"에 집중하려고합니다. 이 일이 어떻게 이루어 졌는지 말해 주실 수 있습니까? 감사.열의 셀을 선택 취소하는 방법
모든 탐색 동작은 테이블의 actionMap에 등록 된 동작으로 제어됩니다. 따라서 이동 방법은 탭 키에 바인딩 된 동작에 연결하고 필요에 따라 해당 동작을 호출하고 원래 동작을 래퍼로 바꾸는 래퍼를 구현하는 것입니다. 하지 - 편집 가능한 셀을 건너 뛰는
원시 코드 :
Object actionKey = table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT)
.get(KeyStroke.getKeyStroke("TAB"));
final Action traverseAction = table.getActionMap().get(actionKey);
Action wrapper = new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
traverseAction.actionPerformed(e);
while(shouldRepeat((JTable) e.getSource())) {
traverseAction.actionPerformed(e);
}
}
private boolean shouldRepeat(JTable source) {
int leadRow = source.getSelectionModel().getLeadSelectionIndex();
int leadColumn = source.getColumnModel().getSelectionModel().getLeadSelectionIndex();
return !source.isCellEditable(leadRow, leadColumn);
}
};
table.getActionMap().put(actionKey, wrapper);
고마워요. 이것은 정말로 도움이되었습니다. – user3245747