Я пытаюсь создать 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