添加数据作为参数后,Jtable内容不会刷新
我有一个 jtable,如果我将表数据设置为公共变量(不要将其放在 tablemodel 的参数上),一切都会正常工作。但现在我需要将表数据设置为参数,并且表不会刷新其内容。我打印出一些单元格值和行号,它们都已更新且正确。只是显示没有改变,还是老内容。我一直在尝试所有类型的方法来刷新表,包括 fireTableDataChanged 和 repaint 以及其他 fire 函数,但没有一个起作用。请帮忙。多谢!!!!!!
表模型是:
public class MyTableModel extends AbstractTableModel {
protected String[] columnNames;
private String[][] data;
public MyTableModel(String[] columnNames, String[][] data){
this.columnNames = columnNames;
this.data = data;
//I add this here but it still doesn't refresh the table
fireTableDataChanged();
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public String getValueAt(int row, int col) {
return data[row][col];
}
public void setData(String[][] newdata) {
data = newdata;
fireTableDataChanged();
}
}
我更新表模型和表的代码是:
tableModel=new MyTableModel(columnNames, data);
tableModel.fireTableDataChanged();
table = new JTable();
table.setModel(tableModel);
((AbstractTableModel) table.getModel()).fireTableDataChanged();
//outputs showed the content is updated
System.out.println("total row count" + table.getRowCount());
System.out.println("cell info" + table.getValueAt(0,5));
table.repaint();
feedback.repaint();
this.repaint();
I have a jtable, everything works fine if I set the table data as a public variable(don't put it on tablemodel's parameter). But right now I need to set the table data as a parameter, and the table won't refresh its contents. I print out some cell value and the rows number, they are both updated and correct. Just the display is not changed, still the old contents. I have been trying all type of methods to refresh the table, including fireTableDataChanged and repaint, and other fire functions, none of them works. Please help. Thanks a lot!!!!!!
the table model is:
public class MyTableModel extends AbstractTableModel {
protected String[] columnNames;
private String[][] data;
public MyTableModel(String[] columnNames, String[][] data){
this.columnNames = columnNames;
this.data = data;
//I add this here but it still doesn't refresh the table
fireTableDataChanged();
}
public int getColumnCount() {
return columnNames.length;
}
public int getRowCount() {
return data.length;
}
public String getColumnName(int col) {
return columnNames[col];
}
public String getValueAt(int row, int col) {
return data[row][col];
}
public void setData(String[][] newdata) {
data = newdata;
fireTableDataChanged();
}
}
The code I update the table model and table are:
tableModel=new MyTableModel(columnNames, data);
tableModel.fireTableDataChanged();
table = new JTable();
table.setModel(tableModel);
((AbstractTableModel) table.getModel()).fireTableDataChanged();
//outputs showed the content is updated
System.out.println("total row count" + table.getRowCount());
System.out.println("cell info" + table.getValueAt(0,5));
table.repaint();
feedback.repaint();
this.repaint();
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您不应该重新分配您的表:
You should not be reassigning your table:
我将模型数据设置为静态,因为它工作正常。我不关心这部分的 OOPS..
I made the Model data as static as its working fine. I dont care about OOPS for this part..