2010-11-30 2 views
3

Object [] [] 배열로 채워진 DefaultTableModel이 있습니다.DefaultTableModel에 CheckBox 추가하기

이제 checkBoxes와 함께 열을 추가하고 이에 따라 작업을 수행하려고합니다. 내가 개체 [] [] 배열에 체크 박스를 추가하고 볼 때

, 내가 텍스트

표시 얻을 'javax.swing.JCheckBox을 [0,0,0x0 ...', 어떻게 할 확인란을 표시하고 작업에 추가 할 수 있습니까?

답변

4

JTable의 부울 값에 대한 기본 체크 박스 렌더러/편집기가 여기를 참조하십시오. 주어진 열에 대해 TableModel#getColumnClassBoolean.class으로 보내주십시오.

0

아니요 모델 객체 [] 배열로 스윙 구성 요소를 제공 할 수 없습니다. 그것은 열에 셀 편집기로 등록되어야합니다.

어쨌든 DefaultTableModel은 부울 클래스 유형 값이 저장되는 열의 편집기로 확인란을 지원합니다.

그래서 배열에서 Boolean.TRUE/Boolean.FALSE 객체를 전달하고 편집 가능한 테이블로 설정합니다. 그런 다음 테이블이 자동으로 확인란을 렌더링합니다.

+0

: 선택 해제 나타납니다 테이블을 만들 때

다음
//create the table DefaultTableModel tableModel = new DefaultTableModel(data, columnNames) //override the method { public Class<?> getColumnClass(int colIndex) { return getValueAt(0, colIndex).getClass(); } 

, 당신은 이런 식으로 초기화 다음은 재정의 메서드에 대한 예입니다 ,하지만 단지 "false"라는 문자열을 출력합니다 : ( – Vivek

+0

TableModel # getColumnClass를 구현하지 않았기 때문에 가능성이 높습니다. 내 대답 참조 :) – Uhlen

2

가 어떻게이 체크 박스를

참조 Uhlen의 대답

을 표시하고 여기에 작업을 추가합니까 각 클래스 유형에 대한 편집기를 등록 할 필요가 있습니까?

TableModelListener를 사용하십시오. 예 :

public void tableChanged(TableModelEvent e) 
{ 
    if (e.getType() == TableModelEvent.UPDATE) 
    { 
     int row = e.getFirstRow(); 
     int column = e.getColumn(); 

     if (column == ?) 
     { 
      TableModel model = (TableModel)e.getSource(); 
      Boolean value = (Boolean)model.getValueAt(row, column)); 

      if (value.booleanValue()) 
       // add your code here 
     } 
    } 
} 
+0

TableModel에 TableModelEvent를 어떻게 추가합니까? – Teysz

+1

@Teysz,'table.getModel.addTableModelListener (...);' – camickr

2

각 반환 형식을 하드 코딩하는 대신 클래스를 가져올 수도 있습니다. 상자를 만드는

data[i][12] = new Boolean(false); 

나는이 시도