繁体   English   中英

JTable 未显示自定义表 model 中的数据

JTable not showing data from custom table model

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有 JTable 应该显示 model 中存在的数据,它是扩展 DefaultTableModel 的自定义 class。 它应该从一个空白表开始,并且可以工作,但不幸的是,每当我尝试添加新行时,似乎 model 没有正确分配给 JTable (数据根本没有出现在 Z812E97477B18204F5134B7B7 上)。

这是TableOrdersModel

public class TableOrdersModel extends DefaultTableModel  implements TableModel {
        String tableHeaders[] = {"KATEGORIJA", "NAZIV", "CENA", "KOLIČINA"}; 
        private LinkedList<Product> products;

        public TableOrdersModel(LinkedList<Product> products) {
            this.products = products;
        }

        @Override 
        public int getColumnCount() { 
            return tableHeaders.length; 
        } 

        @Override 
        public String getColumnName(int index) { 
            return tableHeaders[index]; 
        }
        public void addRow(Product product) {
            products.add(product);
        }

        @Override
        public void setValueAt(Object value, int row, int col) {
            fireTableCellUpdated(row, col);
        }


        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {

            Object value = null;
            Product product = products.get(rowIndex);
            switch (columnIndex) {
                case 0:
                    value = product.getCategory();
                    break;
                case 1:
                    value = product.getName();
                    break;
                case 2:
                    value = product.getPrice();
                    break;
                case 3:
                    value = product.getQuantity();
                    break;
                default:
                    System.err.println("ERROR: Invalid column index.");
            }

            return value;

        }
        public Product getProductAt(int row) {
            return products.get(row);
        }

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

 }

这就是我试图分配它的方式:

void displayOrdersForThisTable(Table selectedTable) {
    LinkedList<Product> products = selectedTable.getOrders();
    Iterator<Product> it = products.iterator();
    
    TableOrdersModel tableModel = (TableOrdersModel) table.getModel();
    tableModel.setRowCount(0);
    int quantity;
    
    while(it.hasNext()) {
        Product productIterator = it.next();
        tableModel.addRow(productIterator);
    }
    table.setModel(tableModel);
}

Also, the reason why I'm using a custom model is because of this post ( How to set a custom object in a JTable row ) where I want to retrieve whole row as a Object (in this case an instance of class Product) instead不必从同一行检索每个单元格并将其拼凑成一个产品。

非常感谢任何帮助,谢谢!

1 个回复

您的 model 始终从其getRowCount()方法返回 0,并且使用此 model 制作的 JTable 将不会显示任何数据行。 相反,如果您要覆盖 DefaultTableModel,那么最好不要覆盖此方法。 让超的object来处理吧。

另外,您尝试将两个数据核用于 model、super 的内部 Vector 以及您自己的 Product 链表,这并不好。 要么使用 super 的数据,要么扩展 AbstractTableModel。 如果您确实扩展了抽象 model,那么是的,覆盖 getRowCount 并返回数据中的行数,这里是您的链表的大小。

2 JTable table model from excel data aka excel into JTable

将 excel 数据加载到 JTable 时出现问题。 我所能找到的只是从用于行的二维数组和用于标题的另一个一维数组创建 JTable ......已经在源代码中填充了数据。 或者为 xls 而不是 xlsx 做的方法。 我可以通过for循环和Apache POI访问行和单元格并将它们打印到控制台 ...

7 JTable:从表中获取数据

我正在尝试运行此代码。其中包含一个具有2行4列的表,该表用于输入学生的分数,但是我不断在353行上收到此nullpointer异常的错误。码 错误是 ...

8 JTable将行添加/删除到自定义表模型(更新表显示)

有没有人有一个很好的示例,说明如何使用自定义表模型从JTable添加/删除行? 我似乎遇到的问题是在添加或删除项目时如何保持表的更新。 真正简单的想法是在表格上方有一个添加和删除按钮,该按钮允许用户即时更改表格。 ...

9 JTable不显示表头

我的目标是使用JTable显示数据库中的数据。 从以下位置引用代码: 从ResultSet填充JTable的最简单代码 我修改了代码以适合我的情况。 我有一个带有以下方法的TopicData类: 在另一个类TopicView中: 我意识到我的表在每一列的顶部都没有标 ...

10 当数据从数据库馈送到表时,JTable中的CheckBox不会显示,但会显示真实的假值

我有一个JTable,它使用DefaultTableModel来填充数据。 现在我的问题是,表中何时有表,并且表中只有空行,布尔类型的列以复选框形式显示。 但是,当我从数据库向表中添加数据时,复选框消失了,表显示了简单的对与错。 我已经检查了解决方案,并在链接中找到了一个(在问题注释中)。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM