在我从数据结构中的excel导入电子表格的名称之后,我尝试用fireTableChanged()方法更新我的fireTableChanged,但是该方法没有被执行。我通过测试确认数据是正确导入的,jtable应该有必要的信息。
如果JTable被正确更新,我需要做什么?我找到了其他几个关于这个话题的链接,但没有一个对我有用:
AbstractDataTable fireTableDataChanged()不刷新jtable
型号:
public class Model extends Observable {
String[][] data;
List<Arbeitsmappe> AMList = new LinkedList<>();
.....
public void setAMList(List<Arbeitsmappe> aMList) {
AMList = aMList; //new List replace the old
this.getData(); //The 2dimensional Array is filled with the names from the list
setChanged();
notifyObservers(Controller.Command_Excel_Eingelesen);
}
}
查看:
JTextField cellEditorTF = new JTextField();
cellEditorTF.setEditable(false);
DefaultCellEditor cellEditor = new DefaultCellEditor(cellEditorTF);
ContentTable = new JTable(model.getData(), Model.columnNames);
//Cell Editable FALSE
ContentTable.getColumnModel().getColumn(0).setCellEditor(cellEditor);
//Single Interval Selection
ContentTable.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
//Cell Listener - When Cell is edited the new informationen is safed in AMLISt
Action action = new AbstractAction()
{
public void actionPerformed(ActionEvent e)
{
TableCellListener tcl = (TableCellListener)e.getSource();
Model.AMList.get(tcl.getRow()).Speichername = String.valueOf(tcl.getNewValue());
// System.out.println("Row: " + tcl.getRow() + " " + Model.data[tcl.getRow()][1]);
}
};
TableCellListener tcl = new TableCellListener(ContentTable, action);
JScrollPane scrollPane = new JScrollPane(ContentTable);
ContentTable.setFillsViewportHeight(true);
ContentTable.getTableHeader().setReorderingAllowed(false);
this.add(BorderLayout.NORTH,ButtonPanel);
this.add(BorderLayout.SOUTH,scrollPane);
}
@Override
public void update(Observable arg0, Object arg1) {
if(arg0 instanceof Model){
Model model = (Model) arg0;
String cmd = (String) arg1;
if(cmd.equals(Controller.Command_Excel_Eingelesen)){
((AbstractTableModel)ContentTable.getModel()).fireTableDataChanged();
ContentTable.repaint();
this.repaint();
}
}
发布于 2015-02-06 14:20:07
((AbstractTableModel)ContentTable.getModel()).fireTableDataChanged();
被从模型定义中调用,它不应该是,必须是代码的一部分,覆盖AbstractTableModel
及其方法的类空JTable
方法的重要部分(例如,重写XxxTableCellRenderer
/Editor
)JTable
/AbstractTableModel
的生命周期都有通知程序,确保每个操作/事件都使用了正确的通知器。https://stackoverflow.com/questions/28367522
复制相似问题