Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Aiuto...come posso fare per gestire actionListener?

    Ciao di nuovo..
    Ho questo problema che mi attanaglia da 2 giorni..
    Ho un pannello A su cui vado ad aggiungere inizialmento un pannello B (contenuto in una classe diversa)
    Su questo pannello sono presenti una JComboBox e due bottoni: Aggiugi ed ELimina.

    Cliccando sul bottone Aggiungi si deve aggiungere sul pannello A un altro pannello B sotto al precedente precedentemente caricato. Mentre cliccando sul bottone Elimina si deve eliminare il pannello di tipo B caricato sul pannello A.

    Poi una volta cliccato su un bottone presente sul pannello A voglio che vengono stampati a video tutti le selezioni fatte attraverso i vari JComboBox dei pannelli B caricati sul pannello A.

    Il problema arriva perchè non riesco a gestire gli eventi?
    CHi deve gestirli? Una classe esterna?
    Dovrei gestire i due eventi sia dei vari pannelli B che del pannello A dallo stesso ascoltatore??

    AIUTO AIUTO

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Aiuto...come posso fare per gestire actionListener?

    Originariamente inviato da reginaldo
    Ho un pannello A su cui vado ad aggiungere inizialmento un pannello B (contenuto in una classe diversa)
    Su questo pannello sono presenti una JComboBox e due bottoni: Aggiugi ed ELimina.

    Cliccando sul bottone Aggiungi si deve aggiungere sul pannello A un altro pannello B sotto al precedente precedentemente caricato. Mentre cliccando sul bottone Elimina si deve eliminare il pannello di tipo B caricato sul pannello A.

    Poi una volta cliccato su un bottone presente sul pannello A voglio che vengono stampati a video tutti le selezioni fatte attraverso i vari JComboBox dei pannelli B caricati sul pannello A.

    Il problema arriva perchè non riesco a gestire gli eventi?
    La soluzione più diretta (e non stiamo ora a farci troppe questioni sul "design") sarebbe la seguente.
    I listener per i due pulsanti li puoi anche gestire dentro B e A può anche non "sapere" nulla di ciò.
    Quando istanzi B gli passi il reference ad A. B quindi è in grado di invocare metodi di A quando gli pare. Quando clicchi su uno dei pulsanti, il listener in B invoca un metodo di A che fa quello che deve fare es. aggiungiPannello() o rimuoviPannello(this). In quest'ultimo caso, A deve sapere quale pannello B rimuovere ... appunto lo passi al metodo, è la istanza di B in quel momento!

    A livello di design le due classi sono molto "accoppiate" tra di loro ... ma come ripeto, non facciamo grosse questioni di design, se questa soluzione ti va bene non vedo grossi problemi.

    Se vogliamo fare i pignoli, a rigor di logica, non ha molto senso un pulsante "Aggiungi" in ogni pannello B, avrebbe senso un unico pulsante "Aggiungi" nel pannello A.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Sai ti ringrazio infinitamente..

    Ho fatto come dici tu..secondo me hai trovato la soluzione. Grazie mille

    Sai però che non riesco a capire..come faccio a gestire l'evento del bottone sul pannello A con l'actionPerformed del pannello b, dovrei passare come parametro dell'addactionlistenr una istanza della classe del pannello b. Dopo però riesce a lavorare sui pannelli creati precedentemente in modo da individuare i JCOmboBox di ogni singolo pannello creato?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da reginaldo
    dovrei passare come parametro dell'addactionlistenr una istanza della classe del pannello b.
    Non devi passare qualcosa al listener. Se il ActionListener è implementato in B ... allora dentro actionPerformed() puoi certamente avere il reference alla istanza corrente di B. Che è quella che passi al metodo invocato su A.

    Originariamente inviato da reginaldo
    Dopo però riesce a lavorare sui pannelli creati precedentemente in modo da individuare i JCOmboBox di ogni singolo pannello creato?
    Se dal pannello A vuoi sapere le selezioni nei combo presenti nelle istanze dei pannelli B, allora: 1) Devi tenerti una lista dei pannelli B da qualche parte (in teoria basterebbe anche solo la lista che ha già il container stesso ma devi fare un test perché li "vedi" solo come Component). 2) Definisci in B un metodo che fornisce la selezione nel combo. Quindi A semplicemente va a chiedere ad ognuno dei pannelli B quale è la selezione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Grazie Mille. la soluzione ancora nn l'ho trovata però ti ringrazio molto

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.