Apply cell value when focus is lost

This commit is contained in:
SiboVG 2024-09-21 06:58:16 +01:00
parent db08a4ffc2
commit 3d583eda51

View File

@ -5,6 +5,8 @@ import java.awt.Component;
import java.awt.Dialog; import java.awt.Dialog;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Window; import java.awt.Window;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.KeyAdapter; import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
@ -962,23 +964,41 @@ public class SimulationConditionsPanel extends JPanel {
} }
private static class SelectAllCellEditor extends DefaultCellEditor { private static class SelectAllCellEditor extends DefaultCellEditor {
private Object cellEditorValue;
public SelectAllCellEditor() { public SelectAllCellEditor() {
super(new JTextField()); super(new JTextField());
setClickCountToStart(1); setClickCountToStart(1);
JTextField textField = (JTextField) getComponent();
textField.addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
stopCellEditing();
}
});
} }
@Override @Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
JTextField textField = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column); JTextField textField = (JTextField) super.getTableCellEditorComponent(table, value, isSelected, row, column);
SwingUtilities.invokeLater(new Runnable() { cellEditorValue = value;
@Override SwingUtilities.invokeLater(textField::selectAll);
public void run() {
textField.selectAll();
}
});
return textField; return textField;
} }
@Override
public boolean stopCellEditing() {
JTextField textField = (JTextField) getComponent();
cellEditorValue = textField.getText();
return super.stopCellEditing();
}
@Override
public Object getCellEditorValue() {
return cellEditorValue;
}
@Override @Override
public boolean isCellEditable(EventObject e) { public boolean isCellEditable(EventObject e) {
if (e instanceof MouseEvent) { if (e instanceof MouseEvent) {