Hallo Experten!
Habe folgendes Problem:
Habe ein Programm geschrieben, welches die Zeit von einem Internetzeitserver holt. Es funktionniert folgendermassen: Wenn ich es anwerfe erscheint ein Fenster mit einem Button, sobald ich den Button drücke holt das Proggi die Zeit und gibt sie aus, leider nur über Konsole! Ich will aber, dass die Zeit in einem Textfield im Fenster ausgegeben wird, aber ich weiss nicht wie den eingelesenen String übergeben kann! Denke hat was mit der Schleife zu tun...
Danke für Eure Hilfe
Das Programm:
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.net.*;
public class SZeit extends Frame //Hauptklasse SZeit, abgeleitet von der vordef. Klasse Frame
{ Color x = new Color(0,0,0);
String str2;
String str;
class CWindowLauscher extends WindowAdapter //Adapterklasse innehalb der Klasse SZeit
{ Color x =new Color (255,220,5);
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
class ActionLauscher implements ActionListener //Ereignisklasse innehalb der Klasse SZeit
{
public void actionPerformed(ActionEvent e)
{
try {
Socket s = new Socket("unics.rrzn.uni-hannover.de",13); //neuer Socket zu rrzn...port 13
BufferedReader is = new //buffered, da zeilenweise ingelesen wird
BufferedReader(new InputStreamReader (s.getInputStream()));
boolean weiter = true;
while ((str = is.readLine())!=null)
{
System.out.println(str); //hier wird die Zeit auf der Konsole ausgegeben
str2=str;
}
System.out.println(str2);
}
catch (IOException a)
{
System.out.println(a);
}
}
}
public SZeit (String titel) //Konstruktor von Fenster(SZeit) und Button
{
super (titel);
setBackground(x);
Button knopf = new Button ("Zeit anzeigen");
setLayout (new FlowLayout());
knopf.addActionListener(new ActionLauscher());
add (knopf);
TextField text = new TextField();
text.setColumns(30);
text.setText("Hier sollte eigentlich die Zeit stehen"+str2);
add(text) ;
addWindowListener(new CWindowLauscher()); //Frame beim WindowListener anmelden
}
public static void main (String [] args) //Mainprogramm
{
SZeit fenster = new SZeit ("Zeit von rrzn.uni-hannover.de"); //neue Instanz der Klassse SZeit erstellen
fenster.setSize (300,150);
//fenster.pack();
fenster.setVisible(true);
}
}
Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge
Hallo! Erstmal Danke für Deine Hilfe. Wie Du schon gesagt hast findet eine Ausgabe im Fenster statt, wird jedoch zum Schluss mit NULL überschrieben, jedenfalls wenn ich text.setText(str); in die while Schleife setze.Was ich nur nicht verstehe, warum wird die Konsolenausgabe nicht überschrieben???? Habe beide Anweisungenen (System.out.println(str); und text.setText(str); in die while Schleife gepackt, aber im Fenster wird es trotzdem wieder überschrieben. Auch eine do-while-Schleife hat mich nicht weiter gebracht. Nur wenn ich in der while Schleife eine zweite while Schleife programmiere, bekomme ich eine Ausgabe im Textfeld, allerdings hängt er dann in einer Endlosschleife... :-(