如何创建“自动提交单元格字段” JTable

时间:2019-02-18 17:46:42

标签: jtable

我正在尝试创建一个jtable,当用户将鼠标移离表时,该表会自动提交所有单元格中的文本。

jTable位于jpanel内部的滚动窗格中,可以使用按钮刷新它。

问题在于,当我刷新表格时,我无法再选择任何行。

这是Windows应用程序。

public void addTable() {
DefaultTableModel dm = (DefaultTableModel) volumes.getModel();
dm.getDataVector().removeAllElements();
dm.fireTableDataChanged();     

volumes = DATABASE.findVolumes();
    volumes.addMouseListener(new MouseListener() {
        @Override
        public void mouseClicked(MouseEvent e) {
            if(volumes.getSelectedRow() != -1) {
                remove_volume.setEnabled(true);
            } else {
                remove_volume.setEnabled(false);
            }
        }

        @Override
        public void mousePressed(MouseEvent e) {
        }

        @Override
        public void mouseReleased(MouseEvent e) {
        }

        @Override
        public void mouseEntered(MouseEvent e) {
        }

        @Override
        public void mouseExited(MouseEvent e) {
            CellEditor cellEditor = volumes.getCellEditor();

            int selectedRow = volumes.getSelectedRow();

            if (cellEditor != null) {
                cellEditor.stopCellEditing();
            }

            DefaultTableModel dm = (DefaultTableModel) volumes.getModel();
            dm.fireTableDataChanged();

            if(selectedRow != -1) {
                volumes.setRowSelectionInterval(selectedRow, selectedRow);
            }
        }
    });

TABLE_PANEL.setBounds(new Rectangle(140, 85, 730, 90));
    TABLE_PANEL.add(new JScrollPane(volumes) {
        @Override
        public void setPreferredSize(Dimension preferredSize) {
            super.setPreferredSize(new Dimension(TABLE_PANEL.getWidth(), TABLE_PANEL.getHeight()));
        }
    });

    jPanel.add(TABLE_PANEL);  
}

public void refreshTable() {
addTable();   
}

预期:

https://i.stack.imgur.com/smVoC.png

结果:

https://i.stack.imgur.com/ukLKT.png

0 个答案:

没有答案