2013-02-26 118 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); 
} 

}

我想從abstract改造列volatile爲JCheckBox的。現在的結果是這樣的: enter image description here

我該如何轉換我的表?

回答

2

利用表模型,具體做法是創建一個類,該類擴展javax.swing.table.AbstractTableModel並覆蓋getColumnClass()方法並指定該方法返回Boolean.class這些特定列。

一個很好的開始,你離會http://docs.oracle.com/javase/tutorial/uiswing/components/table.html專門就Creating a Table Model

的鏈接的示例實現可以是:

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 2013-02-26 17:08:18