Beh, non ho codice recente e "pronto" da mostrarti .... ora che ci penso però tra i miei "vecchi" Java Examples nella sezione "AWT/Swing – Tables" c'è un esempio di tabella con table model custom e con dialog di editazione dei dati.
Ci sono molti modi per farlo: usare un componente di una libreria esterna, usare JFormattedTextField di Swing o anche usare in modo un po' oculato JTextField.
Il punto è che se si prevede di dover gestire svariati input "numerici", bisogna trovare una buona soluzione che permetta di incapsulare la logica che altrimenti sarebbe sparpagliata. E in sostanza si tratta solo di applicare i principi della programmazione ad oggetti per ottenere qualcosa di ben incapsulato e facilmente riutilizzabile.
Esempio semplice (codice parziale e non provato):
codice:public class IntegerNumberField extends JTextField { public IntegerNumberField(int columns) { super(columns); } public Integer getIntegerValue() { String text = getText(); if (text.length() > 0) { return Integer.valueOf(text); } else { return null; } } public void setIntegerValue(Integer value) { if (value != null) { setText(value.toString()); } else { setText(""); } } public void setIntValue(int value) { setText(String.valueOf(value)); } }
Questo già basterebbe per un semplice campo numerico intero senza tanti fronzoli. Ma almeno la logica di conversione è incapsulata qui dentro ... non sparpagliata altrove.
Potrei anche mettere ad esempio nel costruttore la impostazione di un Document per "filtrare" immediatamente i caratteri non validi durante qualunque tipo di input. Ma ripeto, verrebbe fatto 1 volta sola, qui dentro e ben nascosto al resto.


Rispondi quotando