2013-02-26 2 views
0

다른 클래스와 함께 사용되는 jTable 클래스를 만들었습니다. 여기에 코드 :테이블 필드를 jCheckBox로 변환

public class Data_Table extends JFrame{ 
DefaultTableModel dtm; 
JTable table; 
JScrollPane scrollPane; 
JFrame ventana; 
JButton button1,button2; 
JPanel pCentral,pSouth,pWindow; 

public void init() { 
    String[] columnNames = {"CBD","abstract","final","native","private","protected","public", 
          "static","strictfp","synchronized","transient","volatile"}; 
    dtm = new DefaultTableModel(columnNames,0);  
    table = new JTable(dtm); 
    scrollPane = new JScrollPane(table); 

    button1 = new JButton("Ok"); 
    button2 = new JButton("Cancel"); 
} 

public void addData(Object[] data) { 
    dtm.addRow(data); 
} 

public void createWindow() { 
    pCentral=new JPanel(); 
    pCentral.add(scrollPane); 

    pSouth=new JPanel(); 
    pSouth.add(button1); 
    pSouth.add(button2); 

    pWindow=new JPanel(new BorderLayout()); 

    pWindow.add(pCentral,BorderLayout.CENTER); 
    pWindow.add(pSouth,BorderLayout.SOUTH); 

    ventana=new JFrame(""); 
    ventana.setContentPane(pWindow); 

    ventana.add(scrollPane); 
    ventana.setSize(1000,200); 
    ventana.setLocationRelativeTo(null); 
    ventana.setVisible(true); 
} 

}

내가 JCheckBox에로 volatileabstract에서 열을 변환합니다. 결과는 바로 다음과 같습니다. enter image description here

테이블을 변환하는 방법 ???

답변

2

구체적으로 javax.swing.table.AbstractTableModel을 확장하고 getColumnClass() 메서드를 재정의하고 해당 특정 열에 대해 메서드가 Boolean.class을 반환하도록 지정하여 테이블 모델을 사용합니다.

좋은 곳은 특별히 Creating a Table Model

에 링크가 예제 구현 될 수 http://docs.oracle.com/javase/tutorial/uiswing/components/table.html이 될 것입니다 당신을 시작합니다 :

public class MyTableModel extends AbstractTableModel { 
     /* Implement the various abstract methods and override any 
     * other methods you need to 
     */ 

     public Class<?> getColumnClass (int columnIndex) { 
      if ((columnIndex == 1) || (columnIndex == 11)) { 
       return Boolean.class; 
      } 
     } 
    } 

그 후에는 사용하여 테이블에 테이블 모델을 적용 할 것 JTable의 메서드는 setModel()

+1

+1이며, getColumnClass() 메서드를 재정의하는 것이 대답의 핵심입니다. 처음부터 새 모델을 만들 필요가 없습니다. DefaultTableModel을 확장하면됩니다. – camickr