Controllo di un textField

di il
3 risposte

Controllo di un textField

Devo fare un banale controllo...

Si può introdurre solo il numero 1 e il numero 2, stop.

Sono in difficoltà, sto perdendo un sacco di tempo : \

 public void controlloFsp2(KeyEvent keyEvent) {
        try {
            System.out.println("Entro in azione");
            System.out.println(keyEvent.toString());
            System.out.println(keyEvent.getCharacter());

            //if (zSel.getText() != "1" || zSel.getText() != "2"){
            /*
            if (keyEvent.getCharacter() != "1" && keyEvent.getCharacter() != "2"){
                Alert alert = new Alert(Alert.AlertType.ERROR, "Mi sa che stai delirando, ricontrolla l'input");
                alert.show();

            }*/

            if ( !keyEvent.getCharacter().contains("1") && !keyEvent.getCharacter().contains("2") && keyEvent.getCharacter().isEmpty()){
                System.out.println("NO");
            }
        } catch (Exception e){
            System.out.println(e.toString());
            System.out.println("ORRORE ##002##");
        }
Quando vado a scrivere 1 è tutto ok, quando scrivo 2 è tutto ok, quando scrivo 3 , la console stampa" NO" , ma se vado a cancellare 1 dalla textField mi stampa "NO" . ho quindi aggiunto: keyEvent.getCharacter().isEmpty() , ma il risultato è che non controlla più.

3 Risposte

  • Re: Controllo di un textField

    Porca miseria, pure per settare il limite di caratteri non è mica uno scherzo... non esiste il SetColoum... porca boia mi tocca inventarmi qualche controllo... ma cristo santo...
  • Re: Controllo di un textField

    Aspetta scusami ma non mi tornano un paio di cose..
    keyevent.getCharacter() mi vien da dire che ritorna il carattere inserito in quel momento che si scatena l'evento (immagino tu stia passando keyevent da un listener collegato ad una textfield a questo metodo).
    Quindi se tu cancelli il carattere "1" dal textfield, keyevent dubito che contenga tutta la stringa del textfield ma nemmeno il carattere "1" appena eliminato, bensi un carattere speciale per identificare il canc....
    Secondo me dall'evento dovresti estrapolare il campo che lo ha scatenato (oppure andare a rileggere il campo) ed eseguire le considerazioni su quello..
    Spero di aver capito giusto le tue necessità, altrimenti spiegami meglio.

    Ciao
  • Re: Controllo di un textField

    MarkRider ha scritto:


    Porca miseria, pure per settare il limite di caratteri non è mica uno scherzo... non esiste il SetColoum... porca boia mi tocca inventarmi qualche controllo... ma cristo santo...
    Non ho esperienze con awt perchè ho sempre usato le librerie swing della JVM, quindi ho cercato un po in giro e ho trovato questo:
    import java.awt.*;
    import java.awt.event.*;
    
    public class TextFieldWithLimit extends TextField 
       implements KeyListener {
       private int  maxLength;
       public TextFieldWithLimit 
              (String initialStr,int col,int maxLength) {
         super(initialStr,col);
         this.maxLength = maxLength;
         addKeyListener(this);
         }
       public TextFieldWithLimit (int col,int maxLength) {
         this("",col,maxLength);
         }
    
       public void keyPressed(KeyEvent e) { 
        char c = e.getKeyChar();
        int len = getText().length();
        if (len < maxLength) {
          return;
          }
        else {
          if((c==KeyEvent.VK_BACK_SPACE)||
            (c==KeyEvent.VK_DELETE) ||
            (c==KeyEvent.VK_ENTER)|| 
            (c==KeyEvent.VK_TAB)||
             e.isActionKey())
             return;
          else {
             e.consume(); 
             }
          }
       }
       public void keyReleased(KeyEvent e) { }
       public void keyTyped(KeyEvent e) { }
       }
    Verifica se potrebbe andarti bene.

    Ciao
Devi accedere o registrarti per scrivere nel forum
3 risposte