2012-12-13 2 views
0

JTable의 일부 열만 선택할 수 있는지 (즉, ListSelectionListener로 전달된다는 의미)?JTable에서 특정 열을 선택할 수 있도록 설정하려면 어떻게합니까?

table.getSelectionModel().addListSelectionListener(new ListSelectionListener() {...}); 
+0

왜 그렇게하고 싶습니까? – DrinkJavaCodeJava

+0

JTable의 열을 선택하면 특정 리스너 집합에 알립니다. 그러나, 나는 편집자 인 동일한 테이블에 또 다른 칼럼을 가지고있다. 사용자가 Editor 열을 선택하면 리스너에게 알리고 싶지 않습니다. – sdasdadas

답변

3

가장 간단한 해결 방법은 자신의 선택 모델을 만들 수 있습니다 : 다음과 같이

나는 내 리스너를 추가 한

table.getColumnModel().setSelectionModel(new DefaultListSelectionModel() { 
    private boolean isSelectable(int index0, int index1) { 
     // TODO: Decide if this column index is selectable 
     return true; 
    } 

    @Override 
    public void setSelectionInterval(int index0, int index1) { 
     if(isSelectable(index0, index1)) { 
      super.setSelectionInterval(index0, index1); 
     } 
    } 

    @Override 
    public void addSelectionInterval(int index0, int index1) { 
     if(isSelectable(index0, index1)) { 
      super.addSelectionInterval(index0, index1); 
     } 
    } 
}); 

참고 또한 당신이 열 선택에서 수신 할 경우, 테이블의 선택 모델이 아닌 열 모델의 선택 모델에 리스너를 추가하려고합니다.

+0

고마워, 그게 완벽 해. – sdasdadas

관련 문제