Newsgroup: it.comp.java
Titolo: Finestra dinamica

Buongiorno a tutti,
vi chiedo di darmi un indicazione su come risolvere il mio problema.
Ho creato una semplice finestra con la classe JFrame. in tale finestra
ho posizionato vari oggetti tra cui un pulsante.
Vorrei che quando si preme il pulsante il frame venda ridisegnato con
oggetti diversi.
Quindi ho una mashera iniziale che cambiambia al premere del pulsante.
Vi dico come vorrei agire:
creo una classe che extende JFrame, il costruttore di tale classe crea
lamaschera iniziale.
Vorrei creare poi altri metodi che disegnano maschere differenti e che
vengano chiamati dalla pressione dei pulsanti che si trovano su di
esse.
Mi sembra però che questo metodo non possa funzionare.... o almeno non
riesco ad attuarlo.
Che ne pensate?
PS Non voglio realizzare applet questo è fondamentale.
Grazie atutti

godm...@tiscali.it
 ha scritto:

Allora, devi essere modulare ed usare i Conteiner come i JPanel.
Ti crei tutti i pannelli che ti servono ad a secondo dell'operazione 
visualizzi nel JFrame quello giusto.
Ogni pannello a sua volta potrà essere formato da altri JPanel. In 
pratica avrai una struttura piramidale con elementi completamente 
interscambiabili.
Delvy

Innanzitutto ti ringrazio per la tua prontezza nella risposta, ora
provo e ti faccio sapere
Ciao
Grazie
Delvy ha scritto:


Ti posto il mio codice, che non funziona , perchè quando premo il
pulsante nn si aggiorna nulla
class  MngWnd extends JFrame{
	Container seccont;
	Container maincont;
	MngWnd (String str , int l, int h){
		super(str);
		this.setSize(l,h);
		maincont=new Container();
		seccont = new Container();
                maincont.setLayout(new BorderLayout());
		JLabel title = new JLabel ("Ciao");
  		maincont.add(title,BorderLayout.NORTH);
		seccont.setLayout(null);
		JLabel userlab = new JLabel("Account");
		JTextField userfld = new JTextField(8);
		JLabel passlab = new JLabel("Password");
		JTextField passfld = new JTextField(8);
		JButton bttn = new JButton("accedi");
		userlab.setBounds(30,10,50,20);
		seccont.add(userlab);
		userfld.setBounds(100,10,50,20);
		seccont.add(userfld);
		passlab.setBounds(30,40,60,20);
		seccont.add(passlab);
		passfld.setBounds(100,40,50,20);
		seccont.add(passfld);
		bttn.setBounds(50,80,100,20);
		seccont.add(bttn);
		maincont.add(seccont,BorderLayout.CENTER);
		add(maincont);
		setVisible(true);
		ActionListener listen = new ActionListener() {
                       public void actionPerformed(ActionEvent e) {
                              System.out.println("cambiato!");
							seccont.removeAll();
							maincont.remove(seccont);
							JLabel z = new JLabel("nuova label");
							z.setBounds(90,10,50,20);
							seccont.add(z);
							seccont.validate();
  						        maincont.add(seccont,BorderLayout.CENTER);
							maincont.validate();
                       } ;
		};
		bttn.addActionListener(listen);
	}
};

 							maincont.validate();
preche non l fai disegnare.
dopo maincont.validate();  prova a mettere un this.repaint();
Ciao Jack

Ho provato ma mi dà errore, perchè se metto this.repaint() si intende
che il frame deve fare repaint, invece è il container che deve farlo,
infatti ho messo maincont.repaint() e funziona!
Però vorrei un chiarimento , a cosa serve a questo punto validate() ?
Grazie


 Perň vorrei un chiarimento , a cosa serve a questo punto validate() ?
boh, sinceramente non so neanche cos fa il metodo...
-- 
Yoda of Borg am I! Assimilated shall you be! Futile resistance is, hmm?