PDA

View Full Version : [Java] Aprire un nuovo frame cliccando su un button


davide_sana
04-10-2009, 15:37
Salve a tutti.
Sono un neofita di java..e in quanto tale ho iniziali difficoltà su programmini anche semplici.

Mi interessava sapere la seguente. Supponiamo di avere un frame con due button. A seconda del button premuto voglio che si aprono due frame differenti..(in cui poi vorrò inserire altri button e/o comandi).

Come faccio con codice a descrivere quanto detto? io ho già il frame e i button. nn so come associare al cliccaggio sul bottone l'evento susseguente.

Grazie..

PGI-Bis
04-10-2009, 17:04
Puoi aggiungere un ascoltatore di eventi al pulsante. Supponiamo che button001 e button002 siano due JButton. Dopo averli creati dirai:

button001.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//codice eseguito in seguito alla pressione del pulsante button001
}
});
button002.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//codice eseguito in seguito alla pressione del pulsante button002
}
});

Di solito nell'actionPerformed si rinvia ad un metodo ad hoc dichiarato per evitare l'annidamento delle istruzioni di gestione dell'interazione nella classe interna locale anonima che fa da ascoltatore di eventi, ottenendo quindi una struttura tipo questa:

public class Qualcosa {

public Qualcosa() {
...bla bla
JButton button001 = new JButton("001");
JButton button002 = new JButton("002");
...bla bla
button001.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
button001Pressed();
}
});
button002.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
button002Pressed();
}
});
}

private void button001Pressed() {
//codice eseguito alla pressione del pulsante button001
}

private void button002Pressed() {
//codice eseguito alla pressione del pulsante button002
}
}

Questa è comunque solo una questione di organizzazione del codice.

davide_sana
05-10-2009, 08:51
Grazie!
Ho provato entrambe le soluzioni da te proposte. Ho preferito la prima soluzione rispetto alla seconda..essendo alle prime armi preferisco al momento "vedere" visivamente un codice più "compatto"..più leggibile..

A presto.