Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Java: Textausgabe in Fenster statt Konsole, WIE????????

BHen / 6 Antworten / Flachansicht Nickles

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);

}
}

bei Antwort benachrichtigen
Borlander BHen „Hallo! Erstmal Danke für Deine Hilfe. Wie Du schon gesagt hast findet eine...“
Optionen
Was ich nur nicht verstehe, warum wird die Konsolenausgabe nicht überschrieben?
Weil in der Console bei jeder Ausgabe eine neue Zeile angehängt wird...

Auch eine do-while-Schleife hat mich nicht weiter gebracht.
Da eine Zeile entweder vorhanden sein kann oder nicht würde ich hier statt der Schleife einfach mit IF prüfen ;-) Wenn schon Schleife (bei einer Datenzeile unsinnig), dann mit zusammen mit weitere Bedingung, oder die Ausgabe an eine Bedingung knüpfen...

Gruß
Borlander
bei Antwort benachrichtigen