Ciao, a tutti oggi mi sto impelagando su un piccolo problema riguardante questi simpatici campi di testo! allora espongo subito il problema:
Ho creato un oggetto che estende JButton con di sopra un JTextFild chiamato campo di testo,
(ho usato il button perchè rispetta meglio le dimensioni che gli assegni)
questa classe è di supporto ad un programma che ne riempe una serie di questi oggettini, ma anche tu pui mettere dei valori, adesso in questa classe ha una varibile boleana che se il testo lo inserisce l'utente viene posizionata a true, ora quando il testo viene cancellato dovrebbe posizionarsi a false solo che non lo fa!![]()
questo è il plainDocument che mi gestisce quello che può essere scritto e quello che no:
ora magari qualcuno ha già affrontato il problema e sa dove mettere mani a me pare giustocodice:private class PianoDiDigitazioneNelleCaselle extends PlainDocument { private int limite; public PianoDiDigitazioneNelleCaselle(int limite){this.limite=limite;} @Override public void insertString(int offs, String str, AttributeSet a)throws BadLocationException { if (str == null) { return; } //questa parte serve per verificare che il valore sia inseribile e funziona char c=str.charAt(0); boolean verificato=false; String temp="123456789"; for(int i=0;i<temp.length();i++){ if(c==temp.charAt(i)){verificato=true;break;} } int val=0; if(verificato){val=Integer.parseInt(str);} if(getLength()+str.length()<=limite && verificato && val<=nMaxPossibile ){ super.insertString(offs, str, a); // adesso qui dovrebbe essere il problema praticamente non viene mai verificata la condizione // che fa diventare il punto non più salvo if(campoTesto.getText().equals("")){ setPuntoSalvo(false); }else{ setPuntoSalvo(true);} return; } if(verificato&& val<=nMaxPossibile){ campoTesto.setText(str); System.out.println("campo testo è"+campoTesto.getText()); } // stessa cosa di prima if(campoTesto.getText().equals("")){ setPuntoSalvo(false); }else{ setPuntoSalvo(true);} } } }
l'unico errore credo sia come commentato nel codice che anche che cacello il testo scritto non viene verificata la condizione e quindi "setPuntoSalvo(false);" non viene mai chiamato

Rispondi quotando
