我创建jtable是先添加column,再往里面添值,不是像sun 的 jtable的tutorial 里那样,把column和每个column的值都初始化好后一次添加到jtable里,所以不知道在往jtable里添加列的时候,如何指定这列是boolean.我想实现的是jtable里 添加如下列
id       Integer
name     String
isvalid  Boolean目前代码是这样的:DefaultTableModel md = (DefaultTableModel) this.getJTable().getModel();
md.addColumn("id");
md.addColumn("name");
md.addColumn("isvalid");但不知道如何指定这各个列的数据类型,请问如何指定??

解决方案 »

  1.   

    解决了。 DefaultTableModel 把每列都当 String来处理,显示数据的时候由于会自动调用toString方法,所以不会出错,但是,要是从jtable里读数据,就得一个个做数据类型转换,把String转成Integer,Double,等等, 
    (如believeyourself86所用的方法),但很不方便啊, 
    但其实完全可以直接取出来就是Integer,Boolean,甚至是自己定义的bean 等类型,要实现这个功能,就得自己写个 TableModel, 重写父类的 getColumnClass 方法,返回自己想要的数据类型的 class就可以了。 
    我写的如下: public class MyTableModel extends DefaultTableModel {     private List <Class> colTypes = new ArrayList <Class>(); 
        public Class getColumnClass(int c) { 
            return colTypes.get(c); 
        } 
        public void addColumn(Object columnName, Class columnType){ 
        this.addColumn(columnName); 
        this.colTypes.add(columnType); 
        } 

      

  2.   

    嗯。正好我要用到。我是和sun的做法一样。
    String[] columnNames = {"First Name","Last Name","Sport","# of Years","Vegetarian"};
    Object[][] data = {
    {"Mary", "Campione",
    "Snowboarding", new Integer(5), new Boolean(false)},
    {"Alison", "Huml",
    "Rowing", new Integer(3), new Boolean(true)},
    {"Kathy", "Walrath",
    "Knitting", new Integer(2), new Boolean(false)},
    {"Sharon", "Zakhour",
    "Speed reading", new Integer(20), new Boolean(true)},
    {"Philip", "Milne",
    "Pool", new Integer(10), new Boolean(false)},};
    DefaultTableModel defaultTableModel2 = new DefaultTableModel(data,columnNames);