albert82
01-07-2005, 22:19
Ciao a tutti.
Devo gestire una maschera di inserimento di numeri decimali. Ecco cosa ho fatto. In base alla lunghezza del campo a db creo un format in modo dinamico:
int lunghezza = lunghezzaCampo;
String format="";
for(int i=0;i<=lunghezza;i++){
if(i!=lunghezza-decimali){
format += "#";
}
else{
format+=".";
}
}
try{
JFormattedTextField numDec = new JFormattedTextField(new MaskFormatter(format));
numDec.setColumns(lunghezza);
/* if(!attuale.isValoriUnici() & attuale.isIncrementante())
numDec.setText("1");*/
numDec.setEditable(false);
numDec.setFocusLostBehavior(JFormattedTextField.CO MMIT);
textField.add(numDec);
}catch(Exception th){th.printStackTrace();}
Non ho problemi nel salvare valori che rientrino nel formato specificato. Se ad esempio è ###.## posso anche salvare 23.32.. Il problema nasce quando lo devo visualizzare dopo aver fatto la query. Il Mask Formatter si aspetta le tre cifre di parte intera e rifiuta il valore. Sapete se c'è un modo per dire al formatter che le cifre sono opzionali?
In alternativa, sapreste indicarmi che soluzione adottare? Ho provato ad utilizzare un DecimalFormat ma non riesco a capire come bloccare il numero di caratteri inseriti nel JFormattedTextField e come evitare l'inserimento di caratteri che non siano numeri..
Spero mi possiate aiutare...Grazie!
Albert
Devo gestire una maschera di inserimento di numeri decimali. Ecco cosa ho fatto. In base alla lunghezza del campo a db creo un format in modo dinamico:
int lunghezza = lunghezzaCampo;
String format="";
for(int i=0;i<=lunghezza;i++){
if(i!=lunghezza-decimali){
format += "#";
}
else{
format+=".";
}
}
try{
JFormattedTextField numDec = new JFormattedTextField(new MaskFormatter(format));
numDec.setColumns(lunghezza);
/* if(!attuale.isValoriUnici() & attuale.isIncrementante())
numDec.setText("1");*/
numDec.setEditable(false);
numDec.setFocusLostBehavior(JFormattedTextField.CO MMIT);
textField.add(numDec);
}catch(Exception th){th.printStackTrace();}
Non ho problemi nel salvare valori che rientrino nel formato specificato. Se ad esempio è ###.## posso anche salvare 23.32.. Il problema nasce quando lo devo visualizzare dopo aver fatto la query. Il Mask Formatter si aspetta le tre cifre di parte intera e rifiuta il valore. Sapete se c'è un modo per dire al formatter che le cifre sono opzionali?
In alternativa, sapreste indicarmi che soluzione adottare? Ho provato ad utilizzare un DecimalFormat ma non riesco a capire come bloccare il numero di caratteri inseriti nel JFormattedTextField e come evitare l'inserimento di caratteri che non siano numeri..
Spero mi possiate aiutare...Grazie!
Albert