Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143

    [JPanel] aggiornare i componenti contenuti

    Ciao a tutti. Questa volta il problema riguarda un componente JPanel, al quale aggiungo o rimuovo dei componenti ogni volta che viene effettuato un click su un bottone. Il problema è che i componenti che vengono aggiunti o rimossi in tempo reale non compaiono immediatamente ma solo dopo che clicco sul pannello oppure modifico le dimensioni del frame nel quale è contenuto il pannello.

    Cercando nel forum ho capito che devo agire sul pannello invocando il metodo repaint(), il problema è che non ho capito quando chiamarlo.

    Qualcuno sa come posso risolvere questo problema?

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [JPanel] aggiornare i componenti contenuti

    Originariamente inviato da alesdario
    Cercando nel forum ho capito che devo agire sul pannello invocando il metodo repaint()
    Precisiamo: se hai usato il posizionamento assoluto dei componenti (=il container non ha un layout manager), allora sì, è necessario usare repaint() sul container.
    Se il container ha un layout manager, va usato in linea di massima validate() sempre sul container. Questo almeno per i layout manager più semplici, per altri es. GridBagLayout ci sono delle "noie" in più ....

    Originariamente inviato da alesdario
    il problema è che non ho capito quando chiamarlo.
    Dopo che hai modificato il container (aggiunto/rimosso componenti dopo che il container è già visibile).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    143

    Re: Re: [JPanel] aggiornare i componenti contenuti

    Originariamente inviato da andbin
    Se il container ha un layout manager, va usato in linea di massima validate() sempre sul container. Questo almeno per i layout manager più semplici, per altri es. GridBagLayout ci sono delle "noie" in più ....
    Il Pannello ha un Layout Manager di tipo BorderLayout. Spero non rientri nel caso dei layout noiosi ..

    Originariamente inviato da andbin
    Dopo che hai modificato il container (aggiunto/rimosso componenti dopo che il container è già visibile).
    quindi se utilizzo un BorderLayout il metodo repaint() non mi serve, giusto? Devo utilizzare validate()?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: [JPanel] aggiornare i componenti contenuti

    Originariamente inviato da alesdario
    Il Pannello ha un Layout Manager di tipo BorderLayout. Spero non rientri nel caso dei layout noiosi ..
    No è ok.

    Originariamente inviato da alesdario
    quindi se utilizzo un BorderLayout il metodo repaint() non mi serve, giusto? Devo utilizzare validate()?
    Esatto.

    Es:
    codice:
    public void actionPerformed(ActionEvent e) {
        tuoPanel.add(nuovoComponente, BorderLayout.SOUTH);
        tuoPanel.validate();
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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 © 2026 vBulletin Solutions, Inc. All rights reserved.