Почему обновление 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 не вносятся какие-либо изменения (после нажатия кнопки).
ВОПРОС
Я провел некоторое исследование, и я знаю, что этот вопрос часто задавался раньше. Я попробовал то, что они сказали, но до сих пор не работает.
Не могли бы вы взглянуть на это?