PDA

View Full Version : [JAVA] JFrame vs JPanel


diablo...aka...boss
19-04-2009, 17:06
Pensavo di aver capito, ma invece no. Ho capito a cosa servono, ma non mi è chiaro quando usare uno e quando usare l altro.

Ogni oggetto di tipo JFrame è dotato di una struttura ad albero a cui il frame delega tutte le operazioni di cui è logicamente depositario.
L'esistenza di un pannello di tipo Container e di tipo JMenuBar uniforma il trattamento dei componenti e dei menu di comandi. Per implementare un frame conviene definire una specifica classe per l'applicazione che eredita da JFrame, in questa classe basta definire un costruttore che definisce alcuni attributi di base per il frame.

Il generico contenitore JPanel permette di raggruppare componenti correlati logicamente fra di loro.
Questa classe può anche essere utilizzata per:
– definire oggetti in grado di intercettare eventi e
– fornire supporti per l'uscita grafica


quindi per implementare la parte grafica devo usare JFrame e far un frame giusto? Ma dentro a questo frame poi riesco a fare bottoni ecc, quindi panel a che mi serve? quando/perchè lo uso?

british
19-04-2009, 18:59
Pensavo di aver capito, ma invece no. Ho capito a cosa servono, ma non mi è chiaro quando usare uno e quando usare l altro.

Ogni oggetto di tipo JFrame è dotato di una struttura ad albero a cui il frame delega tutte le operazioni di cui è logicamente depositario.
L'esistenza di un pannello di tipo Container e di tipo JMenuBar uniforma il trattamento dei componenti e dei menu di comandi. Per implementare un frame conviene definire una specifica classe per l'applicazione che eredita da JFrame, in questa classe basta definire un costruttore che definisce alcuni attributi di base per il frame.

Il generico contenitore JPanel permette di raggruppare componenti correlati logicamente fra di loro.
Questa classe può anche essere utilizzata per:
– definire oggetti in grado di intercettare eventi e
– fornire supporti per l'uscita grafica


quindi per implementare la parte grafica devo usare JFrame e far un frame giusto? Ma dentro a questo frame poi riesco a fare bottoni ecc, quindi panel a che mi serve? quando/perchè lo uso?

Abbastanza rozzamente:

un JFrame corrisponde a una finestra. Può avere una barra dei menu ( JMenuBar ). Un JFrame non può contenere altri JFrame, contiene invece un particolare componente ( il "content pane" se non erro ) che di solito corrisponde a un JPanel.

un JPanel è un "pannello" ovvero sia un'area rettangolare disegnata a schermo. Un JPanel può contenere altri componenti ( caselle di testo, tabelle, pulsanti ecc. ) compresi altri JPanel, che organizzati in maniera gerarchica ( e se si riesce, intelligente ) e posizionati attraveso i "layout manager" servono a disporre i vari elementi di una finestra nel modo desiderato.

come esempio sicuramente impreciso ma credo intuitivo, guarda la finestra del browser che stai usando:
alla swing-maniera potresi immaginarla come un JFrame ( la finestra ) che ha una JMenuBar come barra dei menu e un JPanel che fa da content pane e contiene tutto il resto, ovvero sia: un JPanel aderente al bordo superiore che contiene a sua volta la barra degli indirizzi in un JPanel e i pulsanti di navigazione in un altro.
puoi poi immaginare un JPanel aderente al bordo inferiore del JFrame che contiene la status bar e un JPanel in mezzo a occupare il restante spazio e nel quale viene disegnata la pagina, o che magari contiene un JTabbedPane ( una specie di JPanel "a tab" ) che a sua volta contiene diversi JPanel ( uno per pagina )

Sul sito della Sun trovi dei tutorial ben fatti.

ciao!

british

diablo...aka...boss
19-04-2009, 19:26
Domani a mente lucida vado a rivedere i tutorial della sun. Ma possibile che dentro a un frame riesca a mettere un button ad esempio? Provando con NeatBeans giorni fa mi pareva ben di riuscirci.
Finalmente ho ripristinato eclipse (perchè il s.o. non me lo voleva più aprire), domani riprovo anche con quello.
Intanto grazie.

british
19-04-2009, 19:46
Domani a mente lucida vado a rivedere i tutorial della sun. Ma possibile che dentro a un frame riesca a mettere un button ad esempio? Provando con NeatBeans giorni fa mi pareva ben di riuscirci.
Finalmente ho ripristinato eclipse (perchè il s.o. non me lo voleva più aprire), domani riprovo anche con quello.
Intanto grazie.

Si, ma in realtà il JButton non lo metti proprio direttamente dentro al JFrame, ma dentro al content pane del JFrame, che è un java.awt.Container ( a memoria ) e che ( io almeno! ) si usa rimpiazzare con un JPanel ( che estende Container )

ciao!

british

banryu79
20-04-2009, 09:06
Ciao british, qui trovi esaurienti informazioni che ti chiariranno ogni dubbio:
- How to Make Frames (http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html)
- How to Use Panels (http://java.sun.com/docs/books/tutorial/uiswing/components/panel.html)
infine, per una carellata sui componenti:
- How to Use Various COmponents (http://java.sun.com/docs/books/tutorial/uiswing/components/componentlist.html)

diablo...aka...boss
20-04-2009, 10:18
I dubbi c'è li ho io non british :D
Comunque grazie, adesso guardo anche quelli.

banryu79
20-04-2009, 10:43
I dubbi c'è li ho io non british :D

Tutti abbiamo dei dubbi! :O :D

diablo...aka...boss
20-04-2009, 16:57
Grazie ragazzi, avete risolto i miei dubbi, mitici :cincin: