PDA

View Full Version : [Java-Grafica]Gestione eventi di due finestre


MusashiDamian
16-02-2012, 14:26
Salve, vorrei creare due finestre.Una di questa contiene un pulsante: quando premuto cambia il colore di sfondo dell'altra finestra.E' possibile?

Lordhark
16-02-2012, 14:55
Ciao, certo che puoi farlo. Allora al tuo bottone devi associare un'azione, per farlo ti segnalo questo link ( preso da google libri ) dove è spiegato veramente bene come far prendere vita ad un bottone.

Collegati alla guida (http://books.google.it/books?id=dsD3KnGck7UC&pg=PA365&dq=actionlistener+java&hl=it&sa=X&ei=1hc9T4GqKcbl4QTt4-mHCA&ved=0CDkQ6AEwAQ#v=onepage&q=actionlistener%20java&f=false)


Una volta assegnata al bottone l'azione ( ad esempio mouse click ) gli dici quello che vuoi che faccia; nel caso specifico metti nomefinestra.setbackground(color.magenta ( insomma il colore che vuoi )).

Spero d'essere stato chiaro.

N.b.

Se usi netbeans per fare le gui tutto è molto piu' facile. Puoi personalizzare tutto con pochissimi click del mouse. Ciao!

MusashiDamian
16-02-2012, 15:05
Grazie ;) ho fatto un pezzo del programma :


package grafica;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class DueFinestre extends JFrame {
JButton j;
public DueFinestre(){
super("Due finestre");
setDefaultCloseOperation(EXIT_ON_CLOSE);
j = new JButton("Cambia colore sfondo!");
j.addActionListener(new ActionListener());

}
class ActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {


}

}


public static void main(String[] args) {
DueFinestre a=new DueFinestre();
DueFinestre b=new DueFinestre();


}

}


Come faccio,nella gestione del bottone,a fargli capire di cambiare il colore all'altra finestra?

PGI-Bis
19-02-2012, 01:36
Puoi fare una cosa del genere:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;

public class DueFinestre extends JFrame {
private JButton j;
private DueFinestre that;

public DueFinestre(){
super("Due finestre");
setDefaultCloseOperation(EXIT_ON_CLOSE);
j = new JButton("Cambia colore sfondo!");
j.addActionListener(new MyActionListener());

}

public void setThat(DueFinestre that) {
this.that = that;
}

class MyActionListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
that.j.setBackground(java.awt.Color.RED);
}
}

public static void main(String[] args) {
DueFinestre a=new DueFinestre();
DueFinestre b=new DueFinestre();
a.setThat(b);
b.setThat(a);
}
}

Cioè non la faresti veramente, si diventa ciechi a farlo, ma il principio generale è che se vuoi che qualcosa interagisca con qualcos'altro e viceversa (qui sono due istanze della stessa classe, a e b, di tipo DueFinestre) allora devi dare all'uno un riferimento all'altro. Di norma si tratta di un riferimento indiretto.