Visualizzazione dei risultati da 1 a 4 su 4

Discussione: "Navigare" trai Jpanel

Visualizzazione discussione

  1. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da joker06 Visualizza il messaggio
    è 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.

    Quote Originariamente inviata da joker06 Visualizza il messaggio
    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.
    Ultima modifica di andbin; 02-10-2014 a 16:05
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.