如何更改或查找JTable中的列类型 [英] How to change or find column type in JTable

查看:191
本文介绍了如何更改或查找JTable中的列类型的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在 JTable 中的每一行插入 JCheckBox ,因此我尝试更改第一列类型。当我尝试这个代码,我得到java.lang.String不能转换为java.lang.Boolean错误。

  DefaultTableModel model = new DefaultTableModel(){
private static final long serialVersionUID = 1L;
@Override
public Class<?> getColumnClass(int column){
switch(column){
case 0:
return Boolean.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return String.class;
默认值:
return String.class;
}
}
}


解决方案>

务必向 TableModel 中添加 Boolean.class 类型的值,如下所示在这里。另请参见 创建表模型 for a typical implementation。

  @Override 
public Class<?> getColumnClass(int c){
return getValueAt(0,c).getClass();
}

补充:我将行值更改为 true



有几种方法可以确保模型包含 Boolean类型的值。 class




  • Boolean.TRUE Boolean.FLASE ,在 java.lang.Boolean


  • code> Boolean.valueOf(boolean b),其中 b 可以是一个值或表达式 boolean


  • true false 文字是自Java 1.5开始的自动装箱




正如@kleopatra所说,简单的教程实现不能满足两个基本要求:




  • 防止 null 值。


  • 对模型的生命周期返回相同的值。



I want to insert JCheckBox in every row in JTable so I try to change my first column type. When I try this code, I get "java.lang.String cannot be cast to java.lang.Boolean" error.

 DefaultTableModel model=new DefaultTableModel(){
            private static final long serialVersionUID = 1L;  
             @Override
            public Class<?> getColumnClass(int column) {  
                    switch (column) {  
                        case 0:
                            return Boolean.class;
                        case 1:  
                            return String.class;
                        case 2:  
                            return String.class;
                        case 3:  
                            return String.class; 
                        default:
                            return   String.class;
                    }  
           } 
   }

解决方案

Be certain to add values of type Boolean.class to your TableModel, as shown here. See also Creating a Table Model for a typical implementation.

@Override
public Class<?> getColumnClass(int c) {
    return getValueAt(0, c).getClass();
}

Addendum: I changed row value as true.

There are several ways to ensure that the model contains a value of type Boolean.class:

  • Boolean.TRUE or Boolean.FLASE, constants defined in java.lang.Boolean.

  • Boolean.valueOf(boolean b), where b may be a value or expression yielding boolean.

  • true or false, literals that are autoboxed since Java 1.5.

As @kleopatra notes, the simple tutorial implementation fails to meet two essential critera:

  • Guard against null values.

  • Return the same value for the lifetime of the model.

这篇关于如何更改或查找JTable中的列类型的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆