codice:
import java.awt.*;
import java.awt.event.*;
public class Finestra extends Frame implements ActionListener {
Button bCrea, bEsci, bEsci2;
Panel mainP, textP;
TextField textf;
public static void main (String argv[]) {
Finestra ist = new Finestra();
}
public Finestra(){
setBounds (30, 10, 300, 200);
setBackground (Color.lightGray);
setTitle("Finestra Creata");
mainP = new Panel();
bCrea = new Button ("Campo di Testo");
bCrea.setBounds(40, 80, 100, 30);
bCrea.addActionListener(this);
bEsci = new Button ("Esci");
bEsci.setBounds(150, 80, 100, 30);
bEsci.addActionListener(this);
bEsci2 = new Button ("Torna indietro");
bEsci2.setBounds(150, 80, 100, 30);
bEsci2.addActionListener(this);
textf = new TextField(15);
mainP.add(bCrea);
mainP.add(bEsci);
mainP.setVisible(true);
textP = new Panel();
textP.add(textf);
textP.add(bEsci2);
this.add(mainP);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if (e.getActionCommand().equals(bCrea.getActionCommand())){
mainP.setVisible(false);
textP.setVisible(true);
this.add(textP);
this.validate();
}
if (e.getActionCommand().equals(bEsci2.getActionCommand())) {
textP.setVisible(false);
mainP.setVisible(true);
this.validate();
}
if (e.getActionCommand().equals(bEsci.getActionCommand()))
System.exit(0);
}
}
Un paio di commenti:
ho messo tutti gli elementi, finestra per finestra, in pannelli differenti e quindi aggiunto i pannelli al tuo frame.
il metodo validate serve perché quando si aggiungono elementi ad una finestra, non è detto che vengano ridisegnati correttamente (meglio: a volte non vengono ridisegnati affatto): validate si assicura che la finestra dell'awt venga ridisegnata per intero, quindi vengono effettivamente mostrati i pannelli aggiunti.
Saluti