实例化后的空TableModel

问题描述 投票:0回答:1

请新手寻求帮助:-)

我正在做一个小项目,以熟悉Java桌面开发和数据库连接。

附加的代码在实例化后为我提供了一个空的TableModel,因此JFrame中没有显示数据。从Test.showFrame();从主窗口的菜单中实例化测试类。

package ...

import ...

public class Test extends JPanel {

    public Test() {
        initializePanel();
    }

    private void initializePanel() {

        // Creates an instance of TableModel
        CategoryTableModel tableModel = new CategoryTableModel();

        System.out.println(tableModel.getRowCount());
        // Creates an instance of JTable with a TableModel
        // as the constructor parameters.

        JTable table = new JTable(tableModel);
        table.setFillsViewportHeight(true);
        JScrollPane scrollPane = new JScrollPane(table);

        this.setPreferredSize(new Dimension(500, 200));
        this.setLayout(new BorderLayout());
        this.add(scrollPane, BorderLayout.CENTER);
    }

    public static void showFrame() {
        JPanel panel = new Test();
        panel.setOpaque(true);

        JFrame frame = new JFrame("test");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.setContentPane(panel);
        frame.pack();
        frame.setVisible(true);
    }

    class CategoryTableModel extends AbstractTableModel {

        private List<Category> all = null;
        private Iterator<Category> iterator = null;
        private int tableRowCount;
        private TableModel tableModel;


        public CategoryTableModel(){
            Vector tableData = new Vector();
            // TableModel's column names
            Vector<String> tableHeaders = new Vector<String>();
            tableHeaders.add("Category");

            // Database call
            all = new ReadCategory().allCategories();
            // TableModel's data
            for(Object o : all) {
                Vector<Object> row = new Vector<Object>();
                all.forEach((n) -> row.add(new Category().getName()));
                tableData.add(row);
                System.out.println("row added");

            }
            tableRowCount = tableData.size();
            tableModel = new DefaultTableModel(tableData, tableHeaders);
            System.out.println(tableModel.getRowCount());
        }

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

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

        @Override
        public Object getValueAt(int rowIndex, int columnIndex) {
            return null;
        }

    }

}

数据库调用正在通过Hibernate获取数据并将数据存储在。

感谢您的帮助。

[新手,请寻求帮助:-)我正在做一个小项目,以熟悉Java桌面开发和数据库连接。附加的代码在...

java
1个回答
0
投票

最基本的形式是JTable的表模型定义列,对象到列的映射并保存供JTable调用的数据。如果我们采用您当前的表模型并将其缩减以符合此基本要求,我们将获得以下信息。

© www.soinside.com 2019 - 2024. All rights reserved.