Newsgroup: it.comp.java
Titolo: Inserimento numeri

Salve a tutti vorrei fare in modo che in un JTextField si possano introdurre 
solo numeri e la virgola.
Mi serve per inserimento prezzi in euro, in modo che l'utente non possa 
digitare fesserie.
Inoltre farmattandolo a due cifre obbligatorie dopo la virgola e almeno una 
cifra prima di essa;
senza che sia possibile mettere solo la virgola e basta;
e ancora che sia possibile mettere al massimo solo una virgola in modo che 
non possano digitarsi fessierie del tipo
100,12910
,9292
,
19,9
ecc. ecc.
Penso che debba già esistere qualcosa di ciò che mi serve solo che non ho 
trovato nulla.
Sto cercando di farlo, ma secondo me ci perderò diversi giorni.....sempre 
che ci riesca.
Qualcuno può darmi una dritta su come fare o può indirizzarmi su quacosa di 
simile che già esista?
Grazie 1000
AP

Ho cominciato così ma sicuramente non è ciò che serve a me.
Potete aiutarmi??
     void prezzoText_keyReleased(KeyEvent e) {
                if ( (!prezzoText.getText().equals("0")) &&
                      (!prezzoText.getText().equals("1")) &&
                      (!prezzoText.getText().equals("2")) &&
                      (!prezzoText.getText().equals("3")) &&
                      (!prezzoText.getText().equals("4")) &&
                      (!prezzoText.getText().equals("5")) &&
                      (!prezzoText.getText().equals("6")) &&
                      (!prezzoText.getText().equals("7")) &&
                      (!prezzoText.getText().equals("8")) &&
                      (!prezzoText.getText().equals("9")) &&
                      (!prezzoText.getText().equals("."))) {
                              JOptionPane.showMessageDialog(null,"Inserire 
importo in euro");
    }
}
AP
"AP" <passer...@SPAMlibero.it> ha scritto nel messaggio 
news:i6hVd.58297$QG6.1...@twister2.libero.it...


Ho risolto in questo modo. Potete dirmi se è elegante? Oppure è una
soluzione di cacca....
  void prezzoText_focusLost(FocusEvent e) {
    try {
      double d = Double.valueOf(prezzoText.getText().trim()).doubleValue();
    }
    catch ( NumberFormatException a){
        JOptionPane.showMessageDialog(null,"Inserire solo numeri");
        prezzoText.setText("");
    }
  }
Come posso settare ancora per fare inserire solo due numeri dopo la virgola
e in modo che la virgola non possa essere il primo elemento?
I ci provo, però spero che al posto di perderci troppo tempo ci sia qualcuno 
con la risposta pronta...
AP
"AP" <passer...@SPAMlibero.it> ha scritto nel messaggio
news:i6hVd.58297$QG6.1...@twister2.libero.it...



Esiste un metodo "ascoltatore" per ogni inserimento o modifica di un
carattere:
DocumentListener.
Quindi devi inserire l'ActionListener:
 textField.getDocument().addDocumentListener(new
textFieldDocumentListener() );
successivamente dichiari la classe di gestione eventi:
class TxtFieldDocumentListener implements DocumentListener {
  public void changedUpdate(DocumentEvent e) {
    azioni1();
  }
  public void insertUpdate(DocumentEvent e) {
    azioni2();
  }
  public void removeUpdate(DocumentEvent e) {
   azioni3();
  }
}
Ovviamente le procedure le devi personalizzare a tuo piacimento.
ciao,
--
elfoblu

>di simile che già esista?
Ciao,
non l'ho mai usato ma forse questo puo fare al caso tuo.
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/JFormattedTextField.html
MArco
-- 
reply: remove duh.spam.
http://cthulhu.zapto.org

 class TxtFieldDocumentListener implements DocumentListener {
mi dono mangiato una e:
class TextFieldDocumentListener implements...
PS.: Ovviamente textField è il nome del tuo campo di tipo JTextField ;-)
ciao,
--
elfoblu

 che ci riesca.
Usa DecimalFormat
http://java.sun.com/j2se/1.4.2/docs/api/java/text/DecimalFormat.html
-- 
Giambo - Occhio al filtro antispam _e_ alla whitelist !