Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655

    MEtodo per ripulire i campi

    Ciao esiste un metodo che quando richiamato riesca a ripulire tutti i campi presenti in un Panel?

    mi spiego meglio io ho un Panel che si attiva ogni volta che schiaccio un bottone posto sul MenuBar.In questo panel ci sono dei JTextField dove all'utente è chiesto di inserire i suoi dati.Se cambio Panel e poi ritorno sul precedente i campi rimangono compilati con le stesse info inserite precedentemente.

    un metodo un pò ortodosso e il setText("") per igni box, ma sono in cerca di uno un pò più rapido anche perchè dovrei fare il refresh anche di alcune ComboBox.

    ho provato con il repaint() ma non risolve il mio problema.

    Sapreste indicarmi qualcosa?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Non esiste un metodo più rapido: o li pulisci a mano con un setText() oppure rigeneri di volta in volta il pannello con una new() (oppure rigeneri tutti i componenti, ma dovresti prima rimuoverli e quindi rimetterli nel pannello).


    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
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: MEtodo per ripulire i campi

    Originariamente inviato da melmar20
    Ciao esiste un metodo che quando richiamato riesca a ripulire tutti i campi presenti in un Panel?
    No. Però un JPanel è un Container e quindi ha il metodo:

    public Component[] getComponents()

    Fai un banalissimo ciclo for-each, per ogni componente verifichi con instanceof che sia un JTextField, quindi fai un cast e invochi setText ("").
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    ok io speravo nell'esistenza di un simil repaint() che ripulisse ogni componente del Panel.

    ma visto che non c'è utilizzerò un semplice setText("").

    con questo risolvo per le JTextField

    mentre per le ComboBox?che metodo dovrei utilizzare?

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Per il JComboBox hai a disposizione il metodo removeAllItems().

    Per questo tipo di problemi, comunque, la prima cosa da fare è andare a vedere la documentazione.


    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

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da melmar20
    ok io speravo nell'esistenza di un simil repaint() che ripulisse ogni componente del Panel.
    Fai un banale metodo del tipo:
    codice:
    public void clearPanel (JPanel panel)
    {
        for (Component c : panel.getComponents ())
        {
            if (c instanceof JTextField)
                ((JTextField) c).setText ("");
            else if (c instanceof JComboBox)
                ((JComboBox) c).removeAllItems ();
        }
    }
    Non l'ho testato ma dovrebbe essere ok (e chiaramente puoi aggiungere altri tipi di componenti e magari anche fare una gestione ricorsiva se un JPanel può contenere altri JPanel).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    655
    ok! non volevo utilizzare il removeAllItems() perchè altrimenti avrei dovuto poi reinserirli nuovamente.Comunque va molto bene lo stesso,sprearavo in un metodo che non mi facesse scrivere altre righe di codice,visto che il mio programma è già abbastanza incasinato.

    Grazie mille!!Adesso provo il codice che mi hai passato!!

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.