Applet soll JFrame nur einmal öffnen

Exminster

Grünschnabel
Hallo Leute

Ich habe ein Problem,

ich habe ein signiertes Applet erstellt das ein JFrame öffnet

Code:
public class chat extends Applet {
	public void init(){		
		JFrameGUI() test = new JFrameGUI();
		test.addWindowListener(this);
		test.start();
	}
	public void stop(){		
		test.dispose();
	}
}

public class JFrameGUI extends JFrame {	
	public JFrameGUI(String path){
		super();
		...............			
	}


Das funktioniert alles wunderbar, nur habe ich ein Problem.
Wenn ich im Browser "neu laden" drücke wird das Applet neu ausgeführt und mir das "JFrameGUI" zweimal angezeigt.

Code:
public void stop(){
   ....
wird erst ausgeführt wenn ich das erste Fenster schließe.

Gibt es eine Möglichkeit zu prüfen ob das Applet schon einmal ausgeführt wurde und das JFrame noch geäffnet ist?

Ich hoffe Ihr versteht was ich meine und könnt mir helfen.

Vielen Dank
Rene'
 
Hallo Rene,

das einfachste wäre es eine Variable beim Erzeugen des Jframe auf true zu setzen, beim schließen auf false. So mach ich das immer.

Gruß
Stefan
 
Code:
public class chat extends Applet {

	public boolean open;
	
	public void init(){		
		System.out.println(open);

		JFrameGUI() test = new JFrameGUI();
		test.addWindowListener(this);
		open = true;
		test.start();
	}
	public void stop(){		
		test.dispose();
	}
}

public class JFrameGUI extends JFrame {	
	public JFrameGUI(String path){
		super();
		...............			
	}

Wenn ich es so mache ist die Variable 'open' immer 'false'.
Ich fürchte er ruft die "public void init()" jedesmal auf wenn ich im Browser "reload" drücke.

Gibt es noch eine andere Möglichkeit?
 
Hallo Exminister,

hab es auch mal probiert, geht leider nicht!

Ich hab da im Moment auch keine Lösung für.

Wenn ich was finde werde ich es posten.

Gruß
Stefan
 
Ich habe eine Lösung gefunden.

Code:
public class chat extends Applet {

	public void init(){		
		JFrameGUI test = new JFrameGUI(this.benutzerPath);
		Thread thr = new Thread(test);
		thr.start();
	}
	public void stop(){		
	}
}

public JFrameGUI(String path){
		super();
		super.setLayout(new BorderLayout());
		super.setSize(new Dimension(1024,768));
		super.addWindowListener(this);

		super.add(this.panel1, BorderLayout.SOUTH);		
		super.add(this.panel2, BorderLayout.CENTER);
		super.add(this.panel3, BorderLayout.EAST);
	}
	
	public void run(){
	...................
	}
}

Jetzt wird das Frame jedesmal geschlossen wenn ich im Browser auf Reload drücke.

Ich glaube das Applet hat 'public void init()' nicht verlassen solange das Frame geöffnet war und hat sich deshalb nicht zerstört.

Auf jedenfall funktioniert es jetzt.

Trotzdem Danke Stefan

Gruß Rene'
 

Neue Beiträge

Zurück