我正在尝试创建一个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
结果: