Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775

    "Annullare" il colore del bordo, JTextField.



    Sto facendo un progetto per scuola, una specie di campo di registrazione..

    Ho vari JTextField, dove se non inserisco niente all'interno di uno di essi, e tento la registrazione, mi colora di rosso il bordo della relativa JTexField..
    Per fare questo, utilizzo questo semplice codice all'interno della classe GUI:

    codice:
    if((TextField[3].getText()).length() == 0 )
         TextField[3].setBorder(new LineBorder(Color.RED, 1, true));
    Facendo così, funziona tutto a meraviglia.. ma c'è un piccolo - grande difetto..
    Se io "salto" due JTextField (non inserisco il Nome e il Cognome) giustamente i bordi dei JTextField diventano rossi ed ovviamente non posso proseguire con la registrazione..
    Ma se io subito dopo completo un JTextfield e l'altro lo lascio vuoto (inserisco il Nome, ma dimentico il Cognome), mi dovrebbe tenere il bordo rosso al JTextField del Cognome, mentre l'altro del Nome dovrebbe tornare come originalmente era..
    Ma come faccio?

    Io aggiungi l'else al codice, ma come posso "far tornare" il bordo come originale?
    PS: ho già provato mettendo il bordo grigio (GRAY), ma è un peccato sotto il punto di vista grafico..

    codice:
    if((TextField[3].getText()).length() == 0 )
         TextField[3].setBorder(new LineBorder(Color.RED, 1, true));
    else
         [...]
    Grazie mille!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613

    Re: "Annullare" il colore del bordo, JTextField.

    EDIT: ho detto una brazzata

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Il problema è che non riesci a rimettere lo stesso bordo di prima? Se sicuro che sia quel GRAY?
    Potresti provare a salvarti inizialmente il bordo con getBorder ed impostarlo dopo se necessario con setBorder

  4. #4
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    E come mi posso salvare il bordo?
    Cioè devo salvarlo in una Stringa? No vero..?

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da Buzzz
    E come mi posso salvare il bordo?
    Cioè devo salvarlo in una Stringa? No vero..?
    I suddetti metodi lavorano con oggetti della classe Border, è scritto nella documentazione...

  6. #6
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    In che senso nella documentazione?
    Potresti farmi vedere un link o un esempio pratico?

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    codice:
    // Salvo il bordo attuale in una variabile di tipo "Border", ovviamente
    Border oldBorder = tuaTextField.getBorder();
    
    // Cambio il bordo con quello rosso
    ...
    
    // Se necessario, ripristino con il bordo originale
    tuaTextField.setBorder( oldBorder );
    Non mi sembra così complicato...


    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

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    613
    Originariamente inviato da Buzzz
    In che senso nella documentazione?
    Potresti farmi vedere un link o un esempio pratico?
    La documentazione delle librerie, le API di Java... come fai a programmare senza?

    http://docs.oracle.com/javase/7/docs/api/

  9. #9
    Utente di HTML.it L'avatar di Buzzz
    Registrato dal
    Jan 2009
    Messaggi
    775
    Ho inserito il codice all'interno dell' actionPerformed, però non mi ritorna lo sfondo com'era originalmente..

    Posto il codice; ho provato anche a mettere la prima riga del codice dove dichiaro il bottone, ma niente, non funziona.. Grazie

    codice:
    public void actionPerformed(ActionEvent e) {
            Border oldBorder = TextField[0].getBorder();
            String c = e.getActionCommand();
    
            if(e.getSource()==Button[0]) {
                if((TextField[0].getText()).length() == 0) 
                    TextField[0].setBorder(new LineBorder(Color.RED, 1, true));
                else 
                    TextField[0].setBorder(oldBorder);
             }
    }

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Quel codice viene richiamato ad ogni clic sul pulsante... mi sembra chiaro che "oldBorder" debba essere creato a monte, quando la JTextField è appena stata creata in modo da ottenere il bordo originale, non ogni volta che devi cambiarlo... in quel modo, se entri nel actionPerformed() la seconda volta, quando il bordo è già stato cambiato, oldBorder diventerà il bordo attuale (ovvero quello già modificato) il ché non ha molto senso...

    L'esempio che avevo fatto io era molto esemplificativo, non andava copiato e messo lì nel punto in cui serve.

    Prov a essere più chiaro:

    codice:
    private JTextField tuaTextField;
    privaye Border oldBorder;
    
    // Costruttore !!!
    public TuaClasse() {
       tuaTextField = new JTextField( ... );
       oldBorder = tuaTextField.getBorder();
       ...
    }
    
    public void actionPerformed(ActionEvent ae) {
       if ( tuoiControlli ) {
          // Bordo rosso
          tuaTextField.setBorder( BorderFactory.createLineBorder(Color.RED, 1) );
       } else {
          // Bordo originale
          tuaTextField.setBorder( oldBorder );
       }
    }
    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

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.