Newsgroup: it.comp.java
Titolo: Consiglio su strada da scegliere

Ciao a tutti,
ho la necessità di mettere in un JPanel come sfondo una immagine e al suo
interno (insomma, visivamente sopra) circa 80 altre immagini che vanno a
completare l'immagine di sfondo.
In pratica devo poter interagire con questi particolari (con vari click)
vedendo come sfondo un'immagine...
...non so se mi sono spiegato...
E' qualche giorno che ci sto sbattendo la testa, ma non riesco a decidermi
quale sia la strada migliore e quindi chiedo consiglio a voi.
Avevo in mente una cosa tipo un JLabel esteso su tutto il JPanel e tanti
altri JLabel posizionati "in giro" con altrettanti "mouseClicked(MouseEvent
e)" come sensori per eventuali click. Solo che è mastodontico programmare
una cosa del genere... magari automatizzando qualche procedimento... ma non
so come fare. Per la cronaca queste immagini sono posizionate in griglia
4x10 (più altre in 2x20 a fianco).
Spero di essere stato chiaro,
ciao e grazie!

Ciao, I/O!
Il giorno 10/06/2004 alle ore 20:21 hai scritto:
 I> Avevo in mente una cosa tipo un JLabel esteso su tutto il JPanel e tanti
 I> altri JLabel posizionati "in giro" con altrettanti
 I> "mouseClicked(MouseEvent e)" come sensori per eventuali click. Solo che
 I> è mastodontico programmare una cosa del genere... magari automatizzando
 I> qualche procedimento... ma non so come fare.
Il problema maggiore sara' il posizionamento corretto. Se le immagini sono
fatte con criterio non dovrebbero esserci problemi ad utilizzare un
GridBagLayout. Per i listener puoi anche farne uno solo che ascolta per
tutti, visto che l'evento segnala anche chi lo ha generato.
 I> Per la cronaca queste immagini sono posizionate in griglia 4x10 (più
 I> altre in 2x20 a fianco).
Secondo me la soluzione migliore sarebbe quella di gestire il tutto
manualmente disegnando le immagini sul panel e con un listener unico da cui
puoi ricavare l'immagine cliccata in base alle coordinate passate
dall'evento.
Bye
-- 
Great warrior? Wars not make one great.
http://www.maccasoft.com

 passate dall'evento.
Sto scegliendo questa strada, ho dei problemi minori però... ad esempio come
posso adattare l'immagine caricata alle dimensioni scelte del contenitore
JLabel? Per le immagini da sovrapporre stavo pensando di fare un array
bidimensionale img1[10][4] in modo da identificare subito e in modo
"dinamico" la cella o meglio l'immagine selezionata... è giusto come
ragionamento?
Ciao e grazie ancora!

Ciao, I/O!
Il giorno 11/06/2004 alle ore 15:57 hai scritto:
 I> Stavo pensando di posizionare all'interno del JPanel "generale" altri
 I> due JPanel contenenti ognuno un GridBagLayout e mettere un listener in
 I> uno di essi
Da quanto mi risulta i layout non generano eventi.
 I> (mi servono solo alcune immagini (la metà) cliccabili, tra l'altro una
 I> riga per volta - quindi 4 immagini alla volta) solo che ho due domande:
 I> -Posso rendere "visibili" i GridBagLayout? (giusto per calibrare le
 I> "celle")
Non credo si possa e comunque non serve. Se sai come funziona il
GridBagLayout sai gia' come vengono disegnate le celle.
 I> -E' possibile sapere in quale cella avviene un evento?
 I> (OnMouseOver e Clicked)
I layout non generano eventi, quindi no.
Se vuoi ragionare a righe, puoi usare i JPanel e raggruppare le immagini in
orizzontale su un panel con un FlowLayout e inserire i panel in verticale
(un BoxLayout dovrebbe andare bene) e mettere i listener sui panel.
Se le righe e/o le celle non sono delle stesse dimensioni dai un'occhiata a
cosa puoi fare con un GridBagLayout
http://java.sun.com/j2se/1.4.2/docs/api/java/awt/GridBagLayout.html
 e
ricordati che puoi sempre raggruppare piu' elementi in un panel.
 I> Sto scegliendo questa strada, ho dei problemi minori però... ad esempio
 I> come posso adattare l'immagine caricata alle dimensioni scelte del
 I> contenitore JLabel?
A che ti serve ? La finestra principale la puoi creare in modo che si
ridimensioni automaticamente secondo il contenuto (pack()) se poi uno
aumenta le dimensioni fatti suoi. Puoi anche disabilitare il
ridimensionamento.
 I> Per le immagini da sovrapporre stavo pensando di fare un array
 I> bidimensionale img1[10][4] in modo da identificare subito e in modo
 I> "dinamico" la cella o meglio l'immagine selezionata... è giusto come
 I> ragionamento?
Boh, puo' essere giusto e meno giusto, dipende da cosa devi fare.
Bye
-- 
There is no ignorance; There is knowledge.
http://www.maccasoft.com

 Boh, puo' essere giusto e meno giusto, dipende da cosa devi fare.
Mi pare giusto, mea culpa ;-p
Ciao e grazie

Marco Maccaferri wrote:
[cut]
Ho deciso di intraprendere un'altra strada... mi disegno direttamente tutti
i JLabel "contenitori" di immagini dove mi serve... alla fine č il modo
migliore al mio caso credo.
Mi sai dire se e come č possibile sovrapporre piů JLabel? Ho un JPanel che
chiamiamo uno a questo ho aggiunto:
uno.setLayout(null);
uno.add(Sfondo);
uno.add(img1);
Sfondo.setBounds(0,0,200,300);
img1.setBounds(10,10,50,50); //e qui non va bene perchč mi sposta anche
"Sfondo"
Come si sovrappongono le JLabel?
Grazie mille!

I/O wrote:
[cut]
ok, la strada sembra adatta, il risultato è molto meglio di quanto speravo
all'inizio e ho risolto il problema delle sovrapposizioni con il
JLayeredPane :)
Ottimo,
Byeeez