Почему обновление JTable не работает?

Недавно я пытаюсь разработать свое маленькое приложение. Вчера я столкнулся со следующей проблемой при попытке обновить данные из 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) {
            }
        });
    }
}

ВОПРОС

К сожалению, моя функция refreshButton не работает, что означает: каждый раз, когда я добавляю новый элемент в базу данных, в таблицу me не вносятся какие-либо изменения (после нажатия кнопки).

ВОПРОС

Я провел некоторое исследование, и я знаю, что этот вопрос часто задавался раньше. Я попробовал то, что они сказали, но до сих пор не работает.

Не могли бы вы взглянуть на это?

0 ответов

Другие вопросы по тегам