У меня есть JTable, заполненный инвентарными данными гаража. У него есть части, номер в хранилище и т.д. В этот момент у меня есть JOptionPane, где вы можете ввести данные, если хотите добавить новую часть в инвентарь. это прекрасно работает, но как обновить данные JTable после добавления части?
Это код, который я использую для первоначального заполнения таблицы:
private String[] kolommenOnderdelen = { "Nr", "Omschrijving", "Vooraad" };
private DefaultTableModel modelOnderdelen = new DefaultTableModel(kolommenOnderdelen, 0);
for (Onderdeel a : voorraad.alleOnderdelen()) {
modelOnderdelen.addRow(new String[] {
Integer.toString(a.getOnderdeelNummer()),
a.getOnderdeelOmschrijving(),
Integer.toString(a.getOnderdeelVoorraad()) });
}
tabelOnderdelen = new JTable(modelOnderdelen)
и это код, который у меня есть для JOptionPane
if (JOptionPane.showConfirmDialog(null, nieuwOnderdeel,
"Voer de gegevens van het nieuwe onderdeel in",
JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE) == JOptionPane.OK_OPTION) {
if (!onderdeelOmschrijving.getText().equals("")
&& !onderdeelNR.getText().equals("")
&& !onderdeelVoorraad.getText().equals("")) {
if (voorraad.voegOnderdeelToe(new Onderdeel(
onderdeelOmschrijving.getText(), Integer
.parseInt(onderdeelNR.getText()), Integer
.parseInt(onderdeelVoorraad.getText())))) {
JOptionPane.showMessageDialog(null,
"Het onderdeel is toegevoegd");
}
} else {
JOptionPane.showMessageDialog(null,
"Niet volledig ingevuld", "Vul alle gegevens in!",
JOptionPane.ERROR_MESSAGE);
}
}
Вы должны добавить новую строку в таблицуModel, как это было при запуске таблицы. Использование modelOnderdelen.addRow(..)
будет работать, это будет уведомлять слушателей (представление), и новая строка будет показана в JTable.