添加到ArrayList后刷新JTable

时间:2014-03-16 14:15:56

标签: java swing jtable defaulttablemodel

我有一个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);
            }
        }

1 个答案:

答案 0 :(得分:2)

您必须像初始化表时一样将新行添加到tableModel。 使用modelOnderdelen.addRow(..)将起作用,这将通知侦听器(视图),新行将显示在JTable中。