PDA

View Full Version : [Java] Disabilitare un JPanel


*andre*
14-11-2010, 19:37
ciao ragazzi,
toglietemi una curiosità:
ho un semplice programma di test che contiene due JPanel. L'obbiettivo è che quando io faccio click su un bottone del primo JPanel, mi appaia l'altro sovrapposto al primo con colore di sfondo semitrasparente e con un'animazione di caricamento.
Subito ho pensato ad un OverlayLayout, pero il JPanel al di sotto resta sensibile agli eventi e quindi per esempio se seleziono qualcosa si ridisegna il componente Swing e manda tutto a putt***.
Detto ciò esiste un modo per disabilitare completamente (che si ridisegni solo) un JPanel? ( .setEnabled(false) non lo disabilita completamente)
Oppure sbaglio proprio io la filosofia per risolvere il problema?

Grazie mille :)

banryu79
15-11-2010, 09:11
Invece di usare un secondo JPanel, potresti personalizzare il glasspane del JFrame in questione (sempre che tu stia usando un JFrame, ma sembra ragionevole presumerlo).

Il glasspane è trasparente di default, se esegui l'override del metodo paintComponent puoi disegnarci sopra quello che vuoi e puoi intercettare gli eventi (e quindi consumarli in modo che non si propaghino ai componenti sottostanti) semplicemente aggiungendo i listener appropriati.

Per approfondire, qui trovi della documentazione che dovrebbe essere sufficiente (il secondo link è quello più pertinente, il primo l'ho incluso per completezza):
- Using Top-Level Containers (http://download.oracle.com/javase/tutorial/uiswing/components/toplevel.html)
- How to Use Root Panes (http://download.oracle.com/javase/tutorial/uiswing/components/rootpane.html)

*andre*
15-11-2010, 15:58
grazie per essere sempre disponibile :)
:D