最近我正在尝试开发我的小应用程序。昨天,在按下按钮后尝试刷新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 不起作用,这意味着:每次我向数据库添加新项目时,我的表格都不包含任何更改(按下按钮后)。
我做了一些研究,我知道之前经常会问过这个问题。我已经尝试了他们所说的但仍然无效。
你能看一下吗?