
Originariamente inviata da
joker06
è la giusta strada? tengo un jframe come contenitore e dentro cambio i vari jpanel? è il giusto approccio?
Quando diversi componenti devono occupare il medesimo spazio in tempi differenti, bisogna prestare un minimo/pochino di attenzione e gli approcci possibili sono oltretutto più di uno.
1) L'approccio più diretto è quello di rimuovere e aggiungere fisicamente componenti dentro un contenitore. Se il contenitore ha un layout manager bisogna innanzitutto verificare i suoi vincoli e comunque togliere e inserire componenti implica che il layout va poi rivalidato.
Il content pane di JFrame è un contenitore che ha per default un BorderLayout. Se inserisci es. nella parte CENTER un pannello:
codice:
Container contentPane = frame.getContentPane();
codice:
contentPane.add(pannello1, BorderLayout.CENTER);
poi quando vuoi cambiare il pannello basta che fai:
codice:
contentPane.remove(pannello1);
contentPane.add(pannello2, BorderLayout.CENTER);
contentPane.validate(); // rivalida il layout
2) Si può usare CardLayout, che è un layout manager fatto apposta per trattare i componenti come "carte" di cui solo una per volta può essere visibile. I componenti però li devi creare e inserire nel CardLayout a priori. A ogni componente puoi assegnare un valore "chiave", che tipicamente è un String.
codice:
CardLayout cardLayout = new CardLayout();
contentPane.setLayout(cardLayout);
contentPane.add(pannello1, "p1");
contentPane.add(pannello2, "p2");
In qualunque momento puoi fare es.:
codice:
cardLayout.show(contentPane, "p2");
3) Giocare sulla "visibilità", se il layout manager permette di tenere più componenti con gli stessi vincoli, allora si rende visibile solo un componente per volta e gli altri restano non visibili. Questo è proprio quello che CardLayout fa "dietro le quinte" ma la tecnica è ovviamente anche usabile esplicitamente.
4) Usare JTabbedPane, che ha già i comandi (le "linguette") per switchare il componente. Negli altri 3 casi citati, cosa usare (pulsanti, menù, ecc...) per switchare lo devi scegliere e implementare tu.

Originariamente inviata da
joker06
avete qualche esempio di come si utilizzano gli actionlistener per la gestione dei Jpanel?
Mio esempio "Panel Switch" tra i miei Java Examples, vedi firma.