做Jtable时用string当表头,object[][]当数据,table为可修改,怎么在运行的结果中表中我更改了表显示的数据同时能更改object的数据

解决方案 »

  1.   

    取决于你的每个数据是什么类型,这个问题可能比你预期的要稍微复杂一点。需要你掌握TableModel
    AbstractTableModelTableCellRendererTableCellEditor和一些其他的基础,比如,给你一个 Date 类型,你能不能自己设计一个控件,继承自 JComponent,能够让用户输入一个 Date 的值? 当然你也可以所有数据都用 JTextField 输入...
      

  2.   

    如果所有数据都转换成 String 来显示,用户输入以后再从 String 转换回相应的数据类型,那就可以省去 TableCellRenderer 和 TableCellEditor 的知识,但是 TableModel 是绕不开的,需要你自己掌握,写一个自定义的 TableModel。
      

  3.   

    String[] book={"序号","选中","书籍编号","索书号","标准ISBN","书籍名称","类型","作者","译者","出版社","价格","书架","入库时间","操作员"};
    ExtendedTableModel mode1=new ExtendedTableModel(book,data);
    JTable table=new JTable(mode1);
    JScrollPane jstable=new JScrollPane(table);
                    class ExtendedTableModel extends DefaultTableModel
            {
    public ExtendedTableModel(String[] columnNames , Object[][] cells)
    {
    super(cells , columnNames);
    }
     public Class getColumnClass(int c) 
    {
     return getValueAt(0 , c).getClass();
     
    }
     private static final long serialVersionUID = 1L;
     public boolean isCellEditable(int row,int column)
     { 
           if(column!=1)return false;return true;
     }
    }
    这个是我写的表格代码,通过getclass把选中那列bealoon类变成复选框,就是想把复选框中打勾也就是选中为true的提出出来,有什么办法吗
      

  4.   

    JTable中,显示都是CellRenderer,默认是一个JLabel对象,所以只能显示对象的toString()的值,修改是CellEditor,默认是一个JTextField,用来修改文本的,你可以自定义CellRender和CellEditor来实现对自定义对象的显示和修改。
      

  5.   

    用简单的办法解决了把代码共享下吧
    [code=Java][table.addMouseListener(new MouseAdapter()
          {
        public void mouseClicked(MouseEvent e) {
    if(e.getClickCount()==1){
    int s2=table.getSelectedRow();
    int s1=table.getSelectedColumn();
    Boolean s3=(Boolean)data[s2][s1];
    if(s3==true)data[s2][s1]=false;
    else if(s3==false)data[s2][s1]=true;
    }
    }
          });]
    用鼠标事件来解决感谢上面回帖的,我还是菜鸟你们说的类我还没接触到但还是感谢