2013-02-26 113 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