Hallo!
Ich habe ein Problem mit der Sichtbarkeit von Objekten / Methoden.
Ich habe den Quellcode zur besseren Übersicht in drei Files gepackt.
1) Eine Klasse nennt sich SocketClass und regelt die Verbindung zu einer Netzadresse.
2) Eine Klasse die sich GuiClass nennet, stellt das GUI bereit.
3) Eine Klasse die alles aufruft.
Wenn ich jetzt aus der GUI Klasse einen neues Objekt der Klasse SocketClass erzeuge, und die Ausgabe über System.out.println($ausgabe) ausgebe funktioniert es, ich bekomme die Meldung vom Webserver in der Konsole. Jetzt will ich das aber nicht in der Konsole, sondern in einem Fenster haben.
Zur Übersicht:
Außerhalb des Konstruktors habe ich dann die einzelnen Objekte deklariert, damit ich später auch noch drauf zugreifen kann, also z.B.
SocketClass sc;
JTextArea logTextArea;
usw.
Das funktioniert auch!
Meine Klasse SocketClass
folglich bekomme ich den Fehler
Mit dem fehler kann ich zwar was anfangen, aber ich weiß nicht wie und wo ich logTextArea deklarieren muss, damit er das findet.
Ich habe eigentlich erwaretet, dass ich durch die Deklaration von
in der Klasse GuiClass das logTextArea so sichtbar mache, das es funzt! Wo ist der Fehler?
Danke schonmal für Antworten
Fry
Ich habe ein Problem mit der Sichtbarkeit von Objekten / Methoden.
Ich habe den Quellcode zur besseren Übersicht in drei Files gepackt.
1) Eine Klasse nennt sich SocketClass und regelt die Verbindung zu einer Netzadresse.
2) Eine Klasse die sich GuiClass nennet, stellt das GUI bereit.
3) Eine Klasse die alles aufruft.
Wenn ich jetzt aus der GUI Klasse einen neues Objekt der Klasse SocketClass erzeuge, und die Ausgabe über System.out.println($ausgabe) ausgebe funktioniert es, ich bekomme die Meldung vom Webserver in der Konsole. Jetzt will ich das aber nicht in der Konsole, sondern in einem Fenster haben.
Zur Übersicht:
Code:
//Klasse GuiClass
//Im Konstruktor
...
// In diese Area soll die Ausgabe, die die Methode askServer() liefert
logTextArea = new JTextArea("Ausgabe",15,40);
...
//Hier erstelle ich ein Objekt der Klasse SocketClass
sc = new SocketClass("www.xyz.de",80);
try
{
sc.askServer();
}
catch(IOException e)
{
System.out.println(e);
}
SocketClass sc;
JTextArea logTextArea;
usw.
Das funktioniert auch!
Meine Klasse SocketClass
Code:
public void askServer() throws IOException
{
String befehl = "GET /" + domain + "HTTP/1.0\n\n";
writer.print(befehl);
writer.flush();
boolean done = false;
while(!done)
{
String ausgabe = reader.readLine();
if (ausgabe == null)
{
done = true;
}
//else System.out.println(ausgabe); <--- das geht!
else
{
//Hier möchte ich in das Textfeld schreiben, aber so gehts nicht
logTextArea.append(ausgabe);//<--- das geht nicht!
}
}
}
folglich bekomme ich den Fehler
Code:
SocketClass.java [48:1] cannot resolve symbol
symbol : variable logTextArea
location: class SocketClass
else logTextArea.append(ausgabe);
Ich habe eigentlich erwaretet, dass ich durch die Deklaration von
Code:
JTextArea logTextArea;
Danke schonmal für Antworten
Fry