Получение значений из ячеек после редактирования JTable

0
08 сен 2019 16:10
Добрый день подскажите каким образом можно получить значения из ячеек после редактирования в них данных? В данном примере изменений не происходит
public class PP extends JDialog {
    public PP() {
        setDefaultCloseOperation(HIDE_ON_CLOSE);
        setTitle("паспортные данные");
        setSize(400,220);
        setLocationRelativeTo(null);
        setVisible(true);
        add(pasportJTable());
        JButton addJButton=new ADDButton();
        add(addJButton,"South");
    }
    private JTable pasportJTable() {
        String[] dannie = new String[]{
                "Серия паспорта", "Номер паспорта","Дата выдачи паспорта", "Кем выдан паспорт",
                "Код подразделения",
                "Адрес регистрации", "Дата регистрации",
        };
        JTable pasportJTable = new JTable(7,2);

        pasportJTable.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
        pasportJTable.setRowHeight(20);
        pasportJTable.setOpaque(false);
        pasportJTable.getColumnModel().getColumn(0).setPreferredWidth(140);
        pasportJTable.getColumnModel().getColumn(0).setMaxWidth(140);
        pasportJTable.getColumnModel().getColumn(0).setWidth(140);
        for(int i=0;i<dannie.length;i++)
        {
            pasportJTable.setValueAt(dannie[i],i,0);
            pasportJTable.setValueAt("Не изменен",i,1);
        }

        return pasportJTable;
    }
    private class ADDButton extends JButton
    {
        public ADDButton() {
            super("Изменить");
            setFocusPainted(false);
            addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    for (int i=0;i<pasportJTable().getRowCount();i++)
                    {
                        System.out.println(pasportJTable().getModel().getValueAt(i,0)+" - "+
                                pasportJTable().getModel().getValueAt(i,1));
                        PP.this.setVisible(false);
                        PP.this.dispose();

                    }
                }
            });
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new PP();
            }
        });
    }
}

Ответов: 1

0
10 сен 2019 18:12
Вы модель каждый раз новую создаете и заполяете ее данными. Поэтому модель таблицы и модель, которую вы выводите - две разных модели. А нужна одна. Например, ее можно как поле объекта сохранить. Или из таблицы через getModel получить.
Модераторы: Нет
Сейчас эту тему просматривают: Нет