André Uhres hat gesagt.:
Ist das jetzt eine Quizfrage und wir müssen deinen Code erraten?
Ich glaube das Problem ist wie ich erwähnt habe, dass ich nicht alles beim erneuten init() von Vorne generieren KANN! Ich habe keine andere Wahl. In deinem Minimalbeispiel ist es natürlich ein Kinderspiel alles von Vorne zu generieren.
Ich habe dein Beispiel mal umgeschrieben. Es wird eine JTextPane und ein Thread einmalig generiert und bei einem erneuten init() wiederverwendet. Teste es mal aus - wenn man reloaded ist das JTextPane tot...kein Copy/Paste, kein Löschen, keine Eingabe. Auch der Thread verhölt sich nach mehrmaligem Reload extrem seltsam.
P.S.: Ich weiss die offensichtliche Lösung ist einfach alles in Init() von grundauf neu zu erzeugen. Aber glaub mir die Option hab ich nicht - wie gesagt, es ist eine ausgewachsene Applikation. Ausserdem will ich nicht, dass der Inhalt der TextPane gelöscht...
package main;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.JApplet;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
/**
* @author me
*
*/
public class Test extends JApplet {
private static final long serialVersionUID = 1L;
private static final Container contentPane = buildContentPane();
private static Container buildContentPane() {
System.out.println("buildContentPane");
JPanel panel = new JPanel(new BorderLayout());
JScrollPane jScrollPane = new JScrollPane();
JTextPane textPane = new JTextPane();
textPane.setText("JTextPane\naha\n");
jScrollPane.setViewportView(textPane);
panel.add(jScrollPane);
return panel;
}
static Thread t = new Thread() {
int counter = 0;
@Override
public void run() {
while(true) {
counter++;
System.err.println("Another round: " + counter);
try {
Thread.sleep(Long.MAX_VALUE);
} catch (InterruptedException e) {System.err.println("\nContinue...");}
}
}
};
static {
t.start();
}
public void init() {
System.out.println("init()");
this.setContentPane(contentPane);
t.interrupt();
}
public void start() {
System.out.println("start()");
}
public void stop() {
System.out.println("stop()");
}
public void destroy() {
System.out.println("destroy()");
System.out.println();
}
}