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?
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.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.