Java 自定义的JTable

由于普通的JTable只接收二维数组的信息。但是集合类的很难转化为二维数组,这时候我们可以自定义一个AbstractTableModel 从而实现集合信息呈现在JTable上面。

处理方法代码:

public CusTableModel(List<FareMessage>list){
        this.list=list;
    }

    //行数,及数据集合的大小
    @Override
    public int getRowCount() {
        // TODO Auto-generated method stub
        return list.size();
    }

    //列数,固定值,即字段
    @Override
    public int getColumnCount() {
        // TODO Auto-generated method stub
        return 5;
    }

    //给定行号列号,返回一个元素,我们以list的下标为行号,列号对应FareMessage的不同的字段
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        // TODO Auto-generated method stub
        if(rowIndex < 0 || rowIndex > list.size()){
            return null;
        }
        switch(columnIndex){
        case 0:
            return this.list.get(rowIndex).getNum();
        case 1:
            return  this.list.get(rowIndex).getOrderNum();
        case 2:
            return  this.list.get(rowIndex).getFareName();
        case 3:
            return  this.list.get(rowIndex).getIdNum();
        case 4:
            return  this.list.get(rowIndex).getAirNum();
        default:
            return "-";
        }
    }

    //获取列名
    public String getColumnName(int column) {
            switch(column){
            case 0:
                return "序号";
            case 1:
                return "订单号";
            case 2:
                return "姓名";
            case 3:
                return  "身份证";
            case 4:
                return "航班号";
            default:
                    return "-";
        }
    }

这里需要注意的是,获取列名的方法,AbstractTableModel本身自己不再需要重写,需要自己构造,构造方法名一定要与 public String getColumnName(int column) 这个方法名相同,不然无法显示列名,列名默认为A,B,C

该自定义类的实现:

                        //调用CusTableModel,实现自定义表格
                        CusTableModel ptm2=new CusTableModel(list3);

                        //本窗口大小,图标
                        Toolkit tk=Toolkit.getDefaultToolkit();
                        Dimension e1=jf2.getToolkit().getScreenSize();
                        jf2.setLocation((d.width-d.width/2)/2,(d.height-d.height/2)/2);
                        jf2.setSize(d.width/2, d.height/2);
                        jf2.setIconImage(tk.getImage("image/ico.jpg"));

                        //组件的添加
                        jtb2=new JTable(ptm2);
                        //将JTable加入jscrollPlane里面,不然无法显示JTable
                        jsp2=new JScrollPane(jtb2);
                        //实现点击表格的列名进行排序
                        RowSorter<TableModel>sort2=new TableRowSorter<TableModel>(ptm2);
                        jtb2.setRowSorter(sort2);
                        //设置行距
                        jtb2.setPreferredScrollableViewportSize(e1);
                        //编辑表格不可编辑
                        jtb2.setEnabled(false);
                        //设置表信息
                        jsp2.setBorder(BorderFactory.createTitledBorder("乘客信息"));
                        //将JScrollPlane放置中心
                        jf2.add(BorderLayout.CENTER,jsp2);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值