Hallo,
Ich habe ein Problem. Ein Thread meiner Anwednung soll die Oberfläche meiner Anwendung verändern.
Soviel ich weiß, geht das ja nur, in dem ich der EventQueue ein Runnable Objekt übergebe, also etwa so.
Das Problem ist nur, das ich den Parameter "text" nicht an das Runnable-Objekt übergeben bekomme.
Ich hab mir 2 Möglichkeiten überlegt das hinzubekommen, aber ich finde diese nicht praktikabel.
1. Eine Klassen-Variable myGuiText definieren und der den parameter text übergeben. Auf myGuiText kann das Runnable-Objekt zugreifen.
Allerdings finde ich hat diese Variable als Klassenvariable keine Berechtigung, da sie ja nur von dieser einen Methode verwendet wird.
2. Eine Innere Klasse definieren die Runnable implementiert.
z.b. so
Da aber in anderem Zusammenhang noch mehr Sachen an Oberfläche verändert werden müssen (z.B. Buttons enablen/disablen) müsste ich jede Menge innere Klassen schreiben, die jeweils die run-Methode entsprechend überschreiben. Das kann es ja auch nicht sein.
Gibt es denn keine Möglichkeit nem Runnable-Object direkt nen Parameter mitzugeben?
Ich habe ein Problem. Ein Thread meiner Anwednung soll die Oberfläche meiner Anwendung verändern.
Soviel ich weiß, geht das ja nur, in dem ich der EventQueue ein Runnable Objekt übergebe, also etwa so.
Java:
public class myGui extends JFrame{
[...]
public void veraendereGui(String text)
{
EventQueue.invokeAndWait(new Runnable() {
@Override
public void run() {
// gib text in einer TextArea aus
}
});
}
[...]
}
Das Problem ist nur, das ich den Parameter "text" nicht an das Runnable-Objekt übergeben bekomme.
Ich hab mir 2 Möglichkeiten überlegt das hinzubekommen, aber ich finde diese nicht praktikabel.
1. Eine Klassen-Variable myGuiText definieren und der den parameter text übergeben. Auf myGuiText kann das Runnable-Objekt zugreifen.
Allerdings finde ich hat diese Variable als Klassenvariable keine Berechtigung, da sie ja nur von dieser einen Methode verwendet wird.
2. Eine Innere Klasse definieren die Runnable implementiert.
z.b. so
Java:
private class WriteText implements Runnable {
String ausgabe;
public WriteText(String text) {
ausgabe = text;
}
@Override
public void run() {
// gib ausgabe in einer TextArea aus
}
}
Da aber in anderem Zusammenhang noch mehr Sachen an Oberfläche verändert werden müssen (z.B. Buttons enablen/disablen) müsste ich jede Menge innere Klassen schreiben, die jeweils die run-Methode entsprechend überschreiben. Das kann es ja auch nicht sein.
Gibt es denn keine Möglichkeit nem Runnable-Object direkt nen Parameter mitzugeben?