gpt4 book ai didi

java - JTable fireTableDataChanged() 方法不刷新表

转载 作者:行者123 更新时间:2023-12-01 16:54:09 26 4
gpt4 key购买 nike

添加一行后,我预计 JTable 会被刷新。不幸的是事实并非如此。

我的代码是这样的:

如何添加行:

JButton btnDodaj = new JButton("Dodaj");`

panel.add(btnDodaj);

btnDodaj.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int selectedOption = JOptionPane.showConfirmDialog(null, "Na pewno chcesz dodac nowy rekord?",
"wybieraj", JOptionPane.YES_NO_OPTION);
if (selectedOption == JOptionPane.NO_OPTION) {
return;
}
dbHelper.dodajOsoba(editPaneName.getText(), editPaneNazw.getText(), formattedDataUr.getText(),
(Enum) comboBoxStCyw.getSelectedItem(), (String) comboBoxZaw.getSelectedItem(),
(String) comboBoxMia.getSelectedItem(), textFieldPesel.getText());
simpleTableDemo.model.fireTableDataChanged();

}
});

如何将 simpleTableDemo 添加到 JPanel:

simpleTableDemo = new ListaOsob();
sl_panel.putConstraint(SpringLayout.NORTH, simpleTableDemo, 100, SpringLayout.SOUTH, comboBoxMia);
sl_panel.putConstraint(SpringLayout.WEST, simpleTableDemo, 33, SpringLayout.WEST, panel);
sl_panel.putConstraint(SpringLayout.EAST, simpleTableDemo, 617, SpringLayout.WEST, panel);
panel.add(simpleTableDemo);

SimpleTableDemo的定义:

Object[][] data2 = dbHelper.wyswietlOsoba();
model = new DefaultTableModel(data2, columnNames);
table = new JTable(model);

编辑:

我的dodajOsoba方法:

try {
sql = "INSERT INTO osoba1 (imie, nazwisko, dataUrodzenia, stanCywilny, zawod, miasto, pesel) VALUES ('" + imie
+ "', '" + nazwisko + "','" + dataUrodzenia + "','" + stanCywilny + "','" + zawod + "','" + miasto
+ "','" + pesel +"');";
ListaOsob lista = new ListaOsob();
lista.model.addRow(new Object[]{imie, nazwisko, dataUrodzenia, stanCywilny,zawod,miasto,pesel});

stmt.execute(sql);

}

行已正确添加,但 JTable 未刷新。

我错过了什么?

最佳答案

根据提供的代码,我们无法判断出了什么问题。我们所能做的就是猜测:

  1. 我们不知道 dodajOsoba 方法的作用,尽管它几乎肯定是错误的。如果您想更改表格中显示的数据,则需要直接更新 TableModel 中的数据。因此,您的代码应该使用 DefaultTableModeladdRow(...) 方法来添加新的数据行。

  2. 您绝对不应该在应用程序代码中调用 fireTableDataChanged()。 TableModel 的工作就是调用该方法。 DefaultTableModeladdRow(...) 方法将为您调用适当的方法。

关于java - JTable fireTableDataChanged() 方法不刷新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35188289/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com