View Full Version : [java] leggere la label da un jbutton
ceccoggi
30-01-2007, 16:14
Salve a tutti, immaginate un'applet in cui, in relazione a dei parametri che leggo dall'html, mi genero n jbuttons.
In pratica nell'init faccio una cosa del genere:
jbutton vett[];
...
init()
{
vett = new jbutton[100];
...
Container cp= this.getContentPane();
cp.setLayout(new FlowLayout());
....
for(int i=0;i<getParameter("num");i++)
{
vett[i]=new Jbutton(""+(i+1));
vett[i].addActionListener(new MesaActionListener());
cp.add(vett[i]);
}
...
}
Ora come creo questo MesaActionListener in modo tale che possa leggere la label dal bottone che l'ha chiamata e faccia altre cose in relazione a quel valore letto?
Grazie mille
Salve a tutti, immaginate un'applet in cui, in relazione a dei parametri che leggo dall'html, mi genero n jbuttons.
In pratica nell'init faccio una cosa del genere:
jbutton vett[];
...
init()
{
vett = new jbutton[100];
...
Container cp= this.getContentPane();
cp.setLayout(new FlowLayout());
....
for(int i=0;i<getParameter("num");i++)
{
vett[i]=new Jbutton(""+(i+1));
vett[i].addActionListener(new MesaActionListener());
cp.add(vett[i]);
}
...
}
Ora come creo questo MesaActionListener in modo tale che possa leggere la label dal bottone che l'ha chiamata e faccia altre cose in relazione a quel valore letto?
Grazie milleIntanto, per iniziare, getParameter() ritorna uno String, quindi come minimo dovresti fare una conversione da stringa a numero.
Poi comunque bisogna vedere cosa è quel MesaActionListener, deve essere per forza una classe che implementa l'interfaccia ActionListener (altrimenti non potresti passarlo al addActionListener).
Gli eventi li ricevi tramite il metodo void actionPerformed(ActionEvent e), quindi prendi il componente sorgente con e.getSource() che è sicuramente il pulsante premuto. A quel punto fai quello che vuoi.
ceccoggi
30-01-2007, 16:38
risolto... e.getActionCommand.toString()....tutto ciò che ha scritto andbin lo avevo sottointeso dato che nn volevo copiare e incollare il codice che era troppo lungo e dispersivo, quindi ho scritto una sorta di mix tra java e pseudocodice giusto x focalizzare l'attenzione sul mio problema..
Grazie mille ;)
ceccoggi
30-01-2007, 16:54
ah solo un'ultima cosa...lo scopo del mio listener sarebbe creare nuovi bottoni di numero n pari al numero che sta scritto sopra il bottone che scatena l'evento...solo che ciò non funziona..ho provato anche a creare un jbutton di prova ogni qualvolta che entra nel listener dell'evento, ma nada... non è che devo utilizzare funzioni tipo paint o repaint (il cui funzionamento nn ci viene spiegato sui nostri appunti...)?
grazie di nuovo
ah solo un'ultima cosa...lo scopo del mio listener sarebbe creare nuovi bottoni di numero n pari al numero che sta scritto sopra il bottone che scatena l'evento...solo che ciò non funziona..ho provato anche a creare un jbutton di prova ogni qualvolta che entra nel listener dell'evento, ma nada... non è che devo utilizzare funzioni tipo paint o repaint (il cui funzionamento nn ci viene spiegato sui nostri appunti...)?Creare solo una istanza del JButton ovviamente non è sufficiente, devi inserirlo dentro il layout con add(). Ma non basta ancora, una volta inserito devi ri-validare il layout con validate() (validate è un metodo di un Container).
ceccoggi
30-01-2007, 17:47
anche la storia dell'add l'avevo sottintesa ;)
Cmq x quanto riguarda il "validate" è proprio la funzione che cercavo!! Ora il problema è questo, se volessi lasciare visibile solo i bottoni che aggiungo una volta entrato nel listener (x es., all'inizio ho sta finestra con i bottoni b1, b2 e b3...schiaccio su b2 e mi disegna i bottoni prova1 prova2...però b1, b2 e b3 rimangono, mentre io vorrei levarli...(tralaltro provando a rischiacciare su uno dei 3 bottoni iniziali, ho notato che è come se non avessero + un listener associato...nn restituiscono niente)), come devo fare?
scusate, ma gli appunti che abbiamo fanno pena, e la versione del prog richiesta è penosa così chè sto provando a implementarlo in maniera migliore, ma mi manca la conoscenza di un macello di funzioni :muro: .
grazie di nuovo andbin!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.