Swing JTabbedPane in JApplet -> Reiter bei Aktualisation mehrmals zu sehen

Blackhole16

Bekanntes Mitglied
Guten morgen com,

ich habe in einem JApplet eine JTabbedPane. Alles funktioniert auch, solange ich die Seite, in der das Applet eingebunden ist, nicht aktualisiere. Wenn ich nun verschiedene Aktionen ausführe, erscheint die JTabbedPane weiter rechts und links erscheinen die Reiter der JTP. Ich kann nun in Rechten keine Textfelder mehr markieren, die Knöpfe funktionieren noch, aber jede Aktion wird 2X (oder so oft wie man Reitere hat) ausgeführt... Außerdem kann ich noch die Reiter im rechten JTP anklicken und sie verändern sich.

die Aktionen sind:
1. Seite aktualisieren
2. Seite 2X öffnen
3. Seite schließen, aber ohne Browserneustart wieder öffnen

Ich vermute mal, dass das etwas mit dem Cashe zu tun hat, weiß aber nicht wie ich das beheben kann, bzw. ob es überhaupt geht...

Hier mein (gekürzter) Code:

Java:
	JRootPane rootPane = this.getRootPane();
	JPanel pane = (JPanel) this.getContentPane();
	static JTabbedPane tp;
           JPanel f = new jPanel();
		
	//Initialisierung aller anderen Felder (Button, Label, Textfelder) [...]
	
	public void init(){
		pane.setLayout(new BorderLayout());
		tp = new JTabbedPane();
		p1 = new JPanel();
		p1.setLayout(new BoxLayout(pLogin, BoxLayout.Y_AXIS));
		p1.add(/*alles...*/);
		tp.add("Panel1", p1);
		p2 = new JPanel();
		p2.setLayout(new BoxLayout(pReg, BoxLayout.Y_AXIS));
		p2.add(/*alles...*/);
		tp.add("Panel2", p2);
		f.add(tp);
		pane.add(f, BorderLayout.CENTER);
		rootPane.setDefaultButton(b1);

		tp.addChangeListener(new ChangeListener() {
		      public void stateChanged(ChangeEvent changeEvent) {
		        //bla, bla, bla ;)
		      }
		    });

Ich hoffe der Code hilft euch 🙂

Woran liegt es also, dass das Prog bei den o. g. Aktionen crasht?

mfg
BH16

EDIT: Noch ein Problem (bei Opera beobachtet): Manchmal, wenn ich nach dem Starten des Applets einen anderen Tab vom Browser öffne, wird oben links eine Fläche mit der Hintergrundfarbe des Applets gefüllt, die genau so groß ist wie das Applet... Das ist mir bisher mit keinem anderen Applet so gegangen...
Dann muss ich erst den Tab mit dem Applet öffnen, scrollen und dann gehts...
 
Zuletzt bearbeitet:
OMG!!!!! Du hast Recht!!!
Jetzt ist es vorbei. RIESEN Dank. 🙂

Aber wieso bitteschön macht ein einziges static so einen fetten Fehler?!?

mfg
BH16
 
Static heißt hier dass es pro VM und Klasse nur EIN Objekt der TabbedPane gibt. D.h. auch wenn du ein neues Applet-Objekt erzeugst (via Browser-Refresh), bleibt die TabbedPane-Referenz gleich.
 

Neue Themen


Zurück
Oben