PDA

Visualizza la versione completa : [JAVA] Trovare finestra Parent


superpelo
04-12-2005, 16:43
Ciao,
ho un bottone contenuto in una finestra e vorrei, alla pressione di questo, mediante la cattura dell'evento, determinare facilmente a quale finestra tale bottone appartiene.

Ora nel gestore degli eventi mi tocca fare questo:


((Window)((Component)((Component)((JPanel)((JButto n)e.getSource()).getParent()).getParent()).getPare nt()).getParent()).dispose();


Mi sembra parecchio orribile e soprattutto non riutilizzabile per finestre diverse.

Come faccio?

Ciao!

unomichisiada
04-12-2005, 21:00
Originariamente inviato da superpelo
Ciao,
ho un bottone contenuto in una finestra e vorrei, alla pressione di questo, mediante la cattura dell'evento, determinare facilmente a quale finestra tale bottone appartiene.

Ora nel gestore degli eventi mi tocca fare questo:


((Window)((Component)((Component)((JPanel)((JButto n)e.getSource()).getParent()).getParent()).getPare nt()).getParent()).dispose();


Mi sembra parecchio orribile e soprattutto non riutilizzabile per finestre diverse.

Come faccio?

Ciao!
Non l'ho mai utilizzato ma se non sbaglio c' un metodo getTopLevelAncestor che serve proprio a questo

LeleFT
05-12-2005, 13:55
Non fai prima ad estendere la classe JButton in modo da prendere nel costruttore un riferimento al suo contenitore e fartelo restituire?


public class MioBottone extends JButton {
private Container c;
public MioBottone(Container c, String s) {
super(s);
this.c = c;
...
}

public Container getContainer() { return c; }
}

...

public class Finestra extends JFrame {
...
private MioBottone mb;
...
public Finestra() {
mb = new MioBottone(this, "Ciao");
getContentPane().add(mb);
}
...
public void actionPerformed(ActionEvent ae) {
Container c = ((MioBottone) ae.getSource()).getContainer();
}
}

Ciao. :ciauz:

Loading