3

我希望在 jtable 中更改单元格的数据。我怎样才能做到这一点?当我执行以下代码时,出现错误。

JFrame f= new JFrame();
final JTable table= new JTable(10,5);

TableModelListener tl= new TableModelListener(){
  public void tableChanged(TableModelEvent e){

    table.setValueAt("hello world",2,2);
  }
};

table.getModel().addTableModelListener(tl);
f.add(table);
f.pack();
f.setVisible(true);

我也在下面尝试过,但它仍然不起作用。是什么赋予了?

table.getModel().setValueAt("hello world",2,2);
4

2 回答 2

3

table.setValueAt()在 a 内调用TableModelListener会导致该tableChanged()方法被调用,然后该setValueAt()方法被再次调用,以此类推,无穷无尽,导致一个StackOverflowError.

一种解决方案是使用 aCellEditorListener代替。请参阅此示例

于 2012-10-28T23:45:11.373 回答
0

您可以使用对我有很大帮助的 Rob Camick 的示例,此外,您还可以通过使用此类获得新旧价值。 例子

另请查看博客的末尾以查看我的帖子,将附加代码添加到表单加载事件以处理您的表发生的最后更改。

 MouseEvent me = new MouseEvent(tblDetailInfo, 0, 0, 0, 100, 100, 1, false);
for(MouseListener ml: tblDetailInfo.getMouseListeners()){
ml.mouseClicked(me); }
于 2012-10-29T10:57:41.060 回答