为什么刷新JTable不起作用?

时间:2016-04-24 21:48:56

标签: java swing jtable tablerowsorter

最近我正在尝试开发我的小应用程序。昨天,在按下按钮后尝试刷新JTable中的数据时遇到了以下问题:

简介

我的部分应用程序负责从Oracle数据库收集数据。接下来,它们显示在表格中:

通过这种方法,我从数据库中获取数据

public String[][] selectQuery() {
        int a = 0;
        int b = 0;
        int c = 0;
        columns = 3;
        rows = getRowsNumber();
        dataTable = new String[rows][columns];
        try {
            statement = connection.createStatement();
            resultSet = statement.executeQuery("select * from leki");
            while (resultSet.next() && a < rows && b < rows && c < rows) {
                dataTable[a++][0] = resultSet.getString("NAZWA");
                dataTable[b++][1] = resultSet.getString("CENA").toString();
                dataTable[c++][2] = resultSet.getString("ILOSC").toString();
            }
        } catch (SQLException e) {
            LOGGER.error("Statement error!", e);
        }
        return dataTable;
    }

现在,我的JPANEL包含JTABLE

public class SearchPanel extends JPanel {
private void initializeSearchPanel() {
        query = new ExecuteQuery();
        model = new DefaultTableModel(query.selectMichalQuery(), columnNames);
        table = new JTable(model);
        rowSorter = new TableRowSorter<>(table.getModel());
        textFilter = new JTextField();

        table.setRowSorter(rowSorter);

        JPanel panel = new JPanel(new BorderLayout());
        panel.add(new JLabel("Szukaj: ".toUpperCase()), BorderLayout.WEST);
        textFilter.setFont(new Font(null, Font.BOLD, 20));
        panel.add(textFilter, BorderLayout.CENTER);

        setLayout(new BorderLayout());
        add(panel, BorderLayout.SOUTH);

        refreshButton.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent arg0) {
                table.getModel();
                model = new DefaultTableModel(query.selectMichalQuery(), columnNames);
                table.setModel(model);
                model.fireTableDataChanged();
            }
        });

        panel.add(refreshButton, BorderLayout.EAST);
        add(new JScrollPane(table), BorderLayout.CENTER);

        textFilter.getDocument().addDocumentListener(new DocumentListener() {

            @Override
            public void insertUpdate(DocumentEvent e) {
                String text = textFilter.getText();

                if (text.trim().length() == 0) {
                    rowSorter.setRowFilter(null);
                } else {
                    rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text, 0));
                }
            }

            @Override
            public void removeUpdate(DocumentEvent e) {
                String text = textFilter.getText();

                if (text.trim().length() == 0) {
                    rowSorter.setRowFilter(null);
                } else {
                    rowSorter.setRowFilter(RowFilter.regexFilter("(?i)" + text, 0));
                }
            }

            @Override
            public void changedUpdate(DocumentEvent e) {
            }
        });
    }
}

ISSUE

不幸的是,我的 refreshButton 不起作用,这意味着:每次我向数据库添加新项目时,我的表格都不包含任何更改(按下按钮后)。

问题

我做了一些研究,我知道之前经常会问过这个问题。我已经尝试了他们所说的但仍然无效。

你能看一下吗?

0 个答案:

没有答案