从Jtable

时间:2018-03-05 18:14:33

标签: java jtable

我正面临着Jtable的一个奇怪问题。我有一个小的独立java应用程序,其中我使用了Jtable来显示从数据库中检索的数据。用户可以查看和编辑数据。编辑单元格并按下更新按钮后,编辑的值将在数据库中更新。现在,当用户编辑数据并单击更新按钮时,第一次发生的事情是数值在数据库中正确保留,用户离开模块。但是,再次,如果他/她进入相同的模块并编辑更多单元格并单击更新按钮,则在后端我从这些单元格中获取旧值,尽管Jtable显示单元格中的最新更新值。

以下是代码。

    private JTable jt;
    private TableRowSorter<TableModel> tableSorter; 
    private Dao dao=new Dao();

updateDetails.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                boolean isSuccessful = true;
                int rowCount = jt.getRowCount();
                List<EmployeeMaster> empMasterList = new ArrayList<>();
                int j = 0;
                for (int i = 0; i < rowCount; i++) {
                    EmployeeMaster master = new EmployeeMaster();
                    j = 0;
                        try {
                                master.setEmpId(Long.parseLong((String) jt.getValueAt(i, j)));
                                j++;
                                compId.setName(Long.parseLong((String) jt.getValueAt(i, j)));
                                j++;
                                compId.setNumber((String) jt.getValueAt(i, j));
                                j++;
                                empMasterList.add(master);
                            }
                            dao.updateAllEmpDetails(empMasterList);
                            homePanel.setVisible(true);
                         UpdateEmp.setVisible(false);
                    }
                }
            });

getDataFromDBtoJtable.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
            List<EmployeeMaster> empMasterList = dao.getAllEmpDetails();
            String data[][] = new String[empMasterList.size()][3];
            int i = 0;
            int j = 0;
            for (EmployeeMaster employeeMaster : empMasterList) {
                j = 0;
                data[i][j] = String.valueOf(employeeMaster.getEmpId());
                j++;
                data[i][j] = String.valueOf(employeeMaster.getName());
                j++;
                data[i][j] = String.valueOf(employeeMaster.getNumber());
                i++;
            }
            String column[] = { "ID", "Name", "Number"};
            jt = new JTable(data, column) {

                public boolean isCellEditable(int row, int column) {
                    if (column == 0 || column == 1 || column == 2)
                        return false;
                    else
                        return true;
                };
            };
            tableSorter = new TableRowSorter<TableModel>(jt.getModel());
            jt.setBounds(12, 12, 1200, 400);
            jt.setRowSorter(tableSorter);
            homePanel.setVisible(false);
            UpdateEmp.setVisible(true);
            JScrollPane pane = new JScrollPane(jt);
            pane.setBounds(1, 40, 1150, 300);
            setBounds(0, 0, 2000, 800);
            UpdateEmp.add(pane);

        }
    });

updateDetails - &gt;按钮从jtable获取数据并在数据库中更新

getDataFromDBtoJtable - &gt;按钮从数据库中获取数据并在Jtable中显示

每当用户点击updateDetails时,我都会更新数据库并强制用户离开模块。因此,每当用户进入jtable模块时,他/她就会获得新的Jtable实例。但仍然无法确定出现了什么问题。

0 个答案:

没有答案