2011-10-05 1 views
1

내가 좋아하는 것까지 : 의 JTable가 : 탭에 다음 셀을 선택하지만, 첫 번째 초점은, 다음하지 동일한 셀을 선택 한

  • 가 버튼이 JTable의
  • 해당 행이 생성
  • 에 행을 추가 되세요, 포커스를주고 첫 번째 열을 편집하십시오.
  • 사용자가 Tab 키를 누르면 다음 열을 선택하십시오. 추가 단추를 들어

,이 작업을 수행합니다

add_button.addActionListener(new java.awt.event.ActionListener() { 
    @Override 
    public void actionPerformed(java.awt.event.ActionEvent evt) { 
     int row = table_model.addRow(); 
     table.setRowSelectionInterval(row, row); 
     table.scrollRectToVisible(table.getCellRect(row, 0, true)); 
     table.editCellAt(row, 0); 
     table.transferFocus(); 
     did_add = true; 
    } 
}); 

이 참으로 초점을 편집을 시작하는 테이블 셀을 일으킬 않습니다.

table.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_TAB, 0, false), "selectNextColumnCell"); 

여기 내 문제가있다 : :

  • 내가 이전 셀 선택을 한 경우, 이것은 완벽하게 작동 탭을 누르면 다음 셀을 선택하도록하려면,이 있습니다. 첫 번째 열을 편집하고 Tab 키를 누르면 다음 열이 선택됩니다.
  • 이 테이블을 새로 만들거나 해당 테이블의 외부 일부 위젯이 이전에 초점을했다, 나는 내 추가 버튼을 클릭 그러나 경우는, 다음이 발생합니다
    • 첫 번째 열이 올바르게 선택하고 편집 할 수
    • 때 나는 보통 같은 셀 내가 첫 번째 탭이 실제로 셀에가는 것을, 탭을
    • 때때로 다음 열로 이동하기 위해 두 번 눌러야 할
    • 을 집중, 탭을 눌러 0,0

셀이 초점을 맞추고 편집 중이지만 다음 셀이 잘못되어 테이블의 포커스가 잘못되었습니다.

테이블에 포커스를 설정하는 것과 관련된 몇 가지 해결 방법을 시도했지만 아무 것도 작동하지 않는 것 같습니다 (requestFocus, requestFocusInWindow, 테이블 선택 설정 등).

어떻게 해결할 수 있습니까? 다음 칼럼으로 이동 한 후, 선택되지 않은의 시작에 (일명 : 편집 떨어져 밖으로 탭 이동) 열 선택이 테이블의 행 선택을 설정하여 변경되지 때문에 발생

답변

1

는 첫 번째 열에로 설정합니다. 해결하려면 열 선택과 행 선택을 설정하십시오.

table.setRowSelectionInterval(row, row); 
    table.setColumnSelectionInterval(0, 0); 
+0

고마워요! 문제가 해결되었습니다! –

관련 문제