2013-03-30 86 views
-1

我刚上高中,在编程方面很新。我正在处理我的第一项任务,并且遇到了一个问题。我到处寻找,但没有找到任何帮助。我写了一个gui,它接受JTable中的输入和输出数据。一切看起来都很好,只是当我输入新的输入时表格不会更新,即以前显示的日期不会更改为新的值。我怀疑下面显示的AbstractTableModel的实现是导致故障的原因,因为我只是不知道如何重写方法isCellEditable和setValueAt。有人可以做出必要的更正并给我任何额外的信息,这将有助于我完成我的项目吗?如果你能尽快回到我身边,我将深表感激。JTable单元格未更新

ps。 NH和VH整型数组,PROC_1和proc_是字​​符串数组和表添加到JTabbedPane中,如果该事项...

public class TableModel extends AbstractTableModel { 
    int numRows; 
    String colNames[] = { "NH", "Horse Names", "VH", 
          "Proc. I", "Proc. II" }; 
    TableModel() { 
     super(); 
     numRows = fnh; 
    } 

    @Override 
    public int getRowCount() { 
     return numRows; 
    } 

    @Override 
    public int getColumnCount() { 
     return 5; 
    } 

    @Override 
    public String getColumnName(int c) { 
     return colNames[c]; 
    } 

    @Override 
    public Object getValueAt(int r, int c) { 
     if (c == 0) 
      return nh[r]; 
     else if (c == 1) 
      return hNam[r]; 
     else if (c == 2) 
      return vh[r] ; 
     else if (c == 3) 
      return proc_1[r]; 
     else 
      return proc_2[r];  
    } 

    @Override 
    public boolean isCellEditable(int r, int c) { 
     return true; 
    } 

    @Override 
    public void setValueAt(Object v, int r, int c) { 
     fireTableCellUpdated(r, c); 
    } 
} 
+0

你的DataValues在哪里?包含表格数据的数组.. .. –

+0

不关注你 – user2143292

+0

伟大的链接雷莫斯。一定会派上用场。非常感谢!!! – user2143292

回答

4
  • setValueAt(...)方法在模型中不设置值。它所做的只是激发一种通知方法,而没有其他的办法。
  • 此外,你的模型本质上是无用的,因为它没有数据“核心”,没有什么可以保存它应该保持的数据。通常这是一个集合,如ArrayList。
  • 我想你需要重新阅读JTable教程。
+0

是的,我不知道该怎么做,正如我所说的。 – user2143292

+0

@ user2143292:阅读教程。你不能只做这个东西。 –

+0

已阅读并理解,否则woudld不会在这里寻求帮助......? – user2143292

2

这里您setValueAt应该像

public void setValueAt(Object v, int r, int c) { 
    if (c == 0) 
     nh[r] = (Integer)v; 
    else if (c == 1) 
     hNam[r] = (String)v; 
    else if (c == 2) 
     vh[r] = (Integer)v; 
    else if (c == 3) 
     proc_1[r] =(String)v; 
    else 
     proc_2[r] =(String) v; 
    fireTableCellUpdated(r, c); 
} 

和你的项目完成后。在oracle官方网站阅读完成教程JTable。在那里你会得到一个完整的图片,说明如何正确使用JTable。这里是教程链接:How to use JTable

+0

非常感谢Vishal。让我试试看,我会很快回复你,好吗?请留意这篇文章。 :-) – user2143292

+0

嘿,哥们,你能否向我解释为什么表格第一次显示正确的数据? v是一个持有新数据的对象吗?我如何填充它? – user2143292

+0

首先你告诉我为你做了这个工作?而关于你的其他问题,我只能在看到完整的代码后才能回复它们。 –