Originariamente inviato da cryspolo
Poiche' i pulsanti sono contenuti nel JPanel, non posso legarli alla classe addetta agli eventi, perche' non posso passargli il JFrame, che e' quello che devo ridimensionare.
E perchè no?
Tu hai 3 classi:
- Finestra (il JFrame)
- Pannello (il JPanel con i pulsanti)
- Listener (l'ActionListener)
Dovrai fare in modo che Pannello riceva un riferimento alla classe Finestra (tramite il costruttore o tramite un metodo apposito)
Poi dovrai fare in modo che il Listener riceva un riferimento a Pannello (o, perchè no? a Finestra), sempre tramite costruttore o tramite metodo apposito.
A questo punto, il Listener avrà un riferimento da usare per invocare un metodo apposito: se ha un riferimento a Finestra è semplice poichè può agire direttamente sul setSize(); se ha un riferimento a Pannello, chiamerà un metodo di questa classe che si occuperà a sua volta di richiamare il setSize() sul suo riferimento a Finestra.
codice:
public class Finestra extends JFrame {
...
private Pannello pannello;
...
pannello = new Pannello( this );
}
public class Pannello extends JPanel {
...
private Finestra finestra;
private MioListener listener;
...
public Pannello(Finestra finestra) {
this.finestra = finestra;
...
listener = new MioListener( finestra );
}
}
public class MioListener implements ActionListener {
private Finestra finestra;
...
public MioListener(Finestra finestra) {
this.finestra = finestra;
}
...
@Override
public void actionPerformed(ActionEvent ae) {
...
// Ridimensiono la finestra
finestra.setSize( ... );
}
}
Ciao.