tableModel需要添加TableModelListener

解决方案 »

  1.   

    可否说的详细点。
    有没有具体解决方法。谢谢
    tableModel需要添加TableModelListener??
    public void tableChanged(TableModelEvent e) {
                        super.tableChanged(e);
                        repaint();
    不是有事件吗
      

  2.   

    我就是把向量重新赋值
     private void testvect()(String ssql){
                vect=new Vector() ;//初始化向量对象
                vect.removeAllElements();
                rowid_vector=new Vector();
                group1=new ButtonGroup();
                  ......
               // 得到数据库行数 recrow;            if (recrow<=1){
                    Vector rec_vector=new Vector();                for(int j=0;j<strColumnName.length;j++){
                        rec_vector.addElement(null);
                    }                vect.addElement(rec_vector);
                    rowid_vector.addElement(null);
                    iselrow=-1;
                    System.out.println("iselrow"+iselrow);
                    return;
                }            for(int i=1;i<recrow;i++){
                    Vector rec_vector=new Vector();
                    for(int j=0;j<strColumnName.length;j++){
                        if(j==0){
                            JButton tempRadioButton= new JButton ();
                            if (i==1){
                                tempRadioButton.setSelected(true);
                                rec_vector.addElement(tempRadioButton);
                                group1.add(tempRadioButton);
                            }else{
                                rec_vector.addElement(tempRadioButton);
                                group1.add(tempRadioButton);
                            }
                        }else{
                            rec_vector.addElement(数据库值);
                        }                    if (i==1){
                            name_vector.addElement(strColumnName[j]);
                        }                }                vect.addElement(rec_vector);
                    rowid_vector.addElement(rs.getCell(0,i).toString());
                    iselrow=0;
                  //  System.out.println("iselrow"+iselrow);            }
             
            }
      

  3.   

    对不起 是JRadioButton 不是JButton
      

  4.   

    看来你是对Swing一点也不懂,这样也可以上手做东西了,真是佩服佩服。
    Swing是基于MVC模式驱动的,TableModel数据改变了,需要触发消息告诉JTable的。
    不过JTable不需要在加TableModelListener监听器了,因为JTable已经监听TableModel的TableModelListener事件了。你在更改你的TableModel的时候只要触发一个事件就可以了。
    每次变化时候调用下面这个方法吧。/**
     * 当 TableModel 的数据发生变化的时候调用这个方法
     * 它会根据参数<code>oldCount</code>和<code>newCount</code>
     * 调用相应的
     * fireTableRowsUpdated
     * fireTableRowsInserted
     * fireTableRowsDeleted
     * 
     * 如果是TableModel的 Structure发生了变化,这个方法不起作用
     * */
    public void fireTableRowsChanged(int oldCount, int newCount)
    {
    if (newCount == 0 && oldCount == 0)
    {
    return;
    }
    else if (newCount == 0 && oldCount > 0)
    {
    this.fireTableRowsDeleted(0, oldCount - 1);
    }
    else if (newCount > 0 && oldCount == 0)
    {
    this.fireTableRowsInserted(0, newCount - 1);
    }
    else if (newCount == oldCount)
    {
    this.fireTableRowsUpdated(0, newCount - 1);
    }
    else if (newCount > oldCount)
    {
    this.fireTableRowsInserted(oldCount, newCount - 1);
    this.fireTableRowsUpdated(0, oldCount - 1);
    }
    else
    {
    this.fireTableRowsDeleted(newCount, oldCount - 1);
    this.fireTableRowsUpdated(0, newCount - 1);
    }
    }
      

  5.   

    public int getRowCount() {
                       int intSize = vect.size();
                       return intSize;
    定义数据模型为什麽上述方法会出错
    楼上的方法我老早就用过了。
    报错
     我的getRowCount()都没定义,哪能用DefaultModel里的方法呢?
      

  6.   

    我觉得你的问题可能是:
    private void testvect()(String ssql){
                vect=new Vector() ;//初始化向量对象
    这里不需要再次初始化了,直接用全局的变量(初始的),
    你只要把元素重新替换就行了public int getRowCount() {
    出错的原因可能是:
    你的数据vect和test_vector不知道是什么关系,
    是不是直接return test_vector.size();就可以了?--以上仅供参考--
      

  7.   

    我觉得你可以去看下jdk中的一个例子,详细的说明了数据库表的使用。在D:\JBuilder7\jdk1.3.1\DEMO\JFC\TableExample下。
      

  8.   

    public int getRowCount() {
    出错的原因可能是:
    你的数据vect和test_vector不知道是什么关系,
    是不是直接return test_vector.size();就可以了?
    test_vect我是用来测试的,我就不明白return vect.size()那出错了