1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| private class IntegerCellEditor extends AbstractCellEditor implements TableCellEditor
{
private JNumberField field; // JTextField modifié
private JTable table;
private SetValue listener;
public IntegerCellEditor (JTable table) {
if (title.equals("%Comp.")) // Seule valeur ne pouvant être négative
field = new JNumberField(0, 100);
else
field = new JNumberField(-100, 100);
}
@Override
public Object getCellEditorValue()
{
return field.getValue(); // Integer.parse(TextField.getText())
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected,
int row, int column)
{
// Effacement de l'ancien listener
if (listener != null)
field.removeKeyListener(listener);
listener = new SetValue(row, column, table, field); // Nouveau listener
field.setValue((int) value); // TextField.setText("" + value)
field.addKeyListener(listener);
return field;
}
// Listener permettant d'ajouter au JTable
private class SetValue implements KeyListener
{
private int row, col;
private JTable table;
private JNumberField field;
public SetValue (int r, int c, JTable t, JNumberField f) {
row = r;
col = c;
table = t;
field = f;
}
@Override
public void keyPressed(KeyEvent arg0)
{}
@Override
public void keyReleased(KeyEvent e)
{
table.setValueAt(field.getValue(), row, col);
}
@Override
public void keyTyped(KeyEvent arg0)
{}
}
} |
Partager