java - 数据更改时刷新 JTable

标签 java swing jtable tablemodel abstracttablemodel

我在刷新 JTable 时遇到问题。我从一个空的 ArrayList 开始,在设置了组合框的选择后,我将内容加载到 ArrayList 但 JTable 没有对此使用react -它仍然是空的。是 TableModel 的问题吗?

这是我的代码...

public class ProjectTableModel extends AbstractTableModel{

    private static final long serialVersionUID = 1L;

    private static ArrayList<String> caseList = new ArrayList<String>();

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

    @Override
    public int getRowCount() {
        return caseList.size();
    }

    @Override
    public Object getValueAt( int row , int col) {
        getRowCount();
        switch(col){
            case 0:
                System.out.println("mam to");
                return caseList.get(row);
        }   
        return null;            
    }


    public void setCaseList(String[] list){
        for (int i =list.length - 1; i >= 0; i--) {
            caseList.add(list[i]);
        }
        System.out.println(getRowCount());
        fireTableDataChanged();
    }

    public String setValueAt(int row, int col){ 
        return null;
    }

    public void addTestCase(String name) throws IOException{    
        File newDir = new File(TestCaseMaker.currentDir, 
            "Przypadek testowy"+(caseList.size()+1));
        newDir.createNewFile();
        caseList.add(name);

        fireTableDataChanged();
    }

    public String getColumnName(int col) {
        return "Przypadki testowe";
    }
}

最佳答案

您的 setValueAt() 实现不正确。它的签名错误,并且无法通知其 View 。

附录:我的 JTable 对数据模型的任何更改没有反应

仅供引用,EnvTableTest是一个使用 AbstractTableModel 阻止编辑的示例; isCellEditable() 的默认实现始终返回 false

@Override
public void setValueAt(Object aValue, int row, int col) {
    if (col == 1) {
        System.out.println("setValueAt: " + row + " " + aValue);
        // update caseList here
        this.fireTableCellUpdated(row, col);
    }
}

有一个相关示例here .

关于java - 数据更改时刷新 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11113637/

相关文章:

java - 为什么只有当我将类存储在一个单独的变量中时这些泛型才起作用?

java - JFrame 不添加来自单独类的图形

java - 物质和 MacOS 菜单栏

java - jframe中如何清除

java - 使用 AbstractTableModel 更改特定单元格的单元格编辑器

java - JTable onchange 事件

java - 明显移动的 JProgressBar

java - 自定义标签 - JspWriter.write() 不产生输出

java - Java Applet 使用 Chrome 浏览器启动客户端程序的替代方案是什么?

java - 在 swing 中撤消 JTable