Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    4

    Campo di input formattato

    Salve a tutti, ho un piccolo problema e spero che qualcuno mi aiuti a risolverlo.

    Devo creare un campo di test per input di interi.
    Questo campo deve consentire l'immissione dei soli caratteri corrispondenti a cifre numeriche con un massimo di 3 cifre.
    Ho provato con JFormattedTextField(provando ad aggiungere anche qualche filtro) il problema è che viene concesso comunque al cliente di immettere cifre illegali in quanto il controllo viene fatto post immissione(perdita di focus etc.).
    Come faccio a visualizzare nel campo di testo a video solo i caratteri desiderati (0-9) impedento l'inserimento di tutti gli altri?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    1) Non hai specificato il linguaggio nel titolo, come previsto dal Regolamento
    2) Non lo hai specificato nemmeno nella discussione (lasciando a chi leggere l'onere di inventarselo)
    3) Leggendo la discussione sono riuscito a capire che si tratta di Java per puro caso (l'unico elemento che possa farlo capire in tutto il testo che hai scritto è JFormattedTextField).
    4) Parlando di Java sei anche nella sezione sbagliata: esiste un sub-forum apposito.
    5) Non hai postato nemmeno una riga di codice che possa servire a chi avesse intenzione di aiutarti.


    Detto questo, ti consiglio una lettura del Regolamento e di fare un po' più di attenzione alla sezione in cui stai postando.


    Ti sposto nella sezione giusta.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Devi definire un tuo Document personalizzato. Ad esempio definisci una classe NumericPlainDocument che estende PlainDocument. In questa classe ridefinisci il metodo insertString(...) :

    codice:
    import javax.swing.text.AttributeSet;
    import javax.swing.text.BadLocationException;
    import javax.swing.text.PlainDocument;
    
    public class NumericPlainDocument extends PlainDocument {
         public void insertString (int offset, String  str, AttributeSet attr) throws BadLocationException {
              if (str == null) return;
              if ((getLength() + str.length()) <= 3) {
                   char c = str.toCharArray()[0];
                   if (((Character.isDigit(c) || (c == java.awt.event.KeyEvent.VK_BACK_SPACE) ||  (c == java.awt.event.KeyEvent.VK_DELETE)))) {
                            super.insertString(offset, str, attr);
                   }
              }
              
         }
    }
    Quindi impostare questo Document come documento del tuo JTextField:

    codice:
    tuoJTextField.setDocument(new NumericPlainDocument());
    Al mio segnale... scatenate l'inferno!

  4. #4
    Utente di HTML.it
    Registrato dal
    Nov 2006
    Messaggi
    4
    Grazie era proprio quello che mi serviva.
    A buon rendere!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.