JTextArea aktualisieren

Hi,
ich hab mal wieder ein Problem mit meinem Programm:
Und zwar, ich schreibe gerade ein Programm, welches 2 JTextAreas(einlesen + auslesen) enthält. In die Textarea "einlesen" schreibe ich irgendwas hinein, sagen wir mal "Test", dies wird in einer Textdatei abgespeichert und in der anderen JTextArea "auslesen" wird der Text dann aus der Textdatei ausgelesen und angezeigt. Nun möchte ich aber einen kleinen "Chat" zwischen 2 Usern machen. Im Moment läuft dieser schon soweit, nur das ich einen Button "aktualisieren" über die Textarea "auslesen" gemacht habe, der wenn man ihn drückt, die Textarea "auslesen" aktualisiert. Ich möchte aber, das der User nicht immer den Button drückt, sondern die Textarea "auslesen" automatisch alle 20 sek aktualisiert wird, also der Text aus der Textdatei in die JTextarea auslesen geschrieben wird.
Hoffe ihr könnt mir helfen!

Gruß
Java_Anfänger
 
Hallo,

erstmal, warum machst du einen Chat über eine Text-Datei?

Schau dir mal die Klasse javax.swing.Timer an. Die könnte dir bei deiner Lösung helfen.

MFG

zEriX
 
Du könntest es beispielsweise so machen:
Code:
import javax.swing.JFrame;
import javax.swing.JTextArea;

/**
 *
 * @author jweckbach
 */
public class Updater extends Thread{
    private JTextArea area = null;
    /** Creates a new instance of Updater */
    public Updater(JTextArea area) {
        this.area = area;
    }
    public void run() {
        while(true){
            area.setText("text"); // hier halt der text aus der datei, text in datei dann löschen
            try {
                Thread.sleep(5000);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        JFrame j = new JFrame();
        j.setSize(400,400);
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextArea area = new JTextArea();
        j.getContentPane().add(area);
        j.setVisible(true);
        new Updater(area).run();
        
    }

    
    
}


Allerdings muss ich mich da wie Zerix fragen, wieso ein Chat über eine TextDatei? Empfinde ich als sehr sinnlos..

*grüssle*
MeinerEiner
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

erstmal, warum machst du einen Chat über eine Text-Datei?

Schau dir mal die Klasse javax.swing.Timer an. Die könnte dir bei deiner Lösung helfen.

MFG

zEriX

Hi,
erstmal danke für deine Antwort.
Ich mach eigentlich gar keinen richtigen Chat, ich möchte blos ein Programm haben, bei dem eine Notiz für einen bestimmten User hinterlegt werden kann und dieser, wenn er online ist, seine Notiz abrufen kann.
Ich mach es deshalb mit einer Text-Datei, da ich noch nicht so viel Ahnung von Programmieren habe und des im Moment mein einzigster Lösungsansatz war bzw. ist.;)
Ich weis, ist nicht gerade professionell, aber es funktioniert.
Des einzige was mir bisher fehlt ist halt nur des mit dem Aktualisieren, falls ein User bereits online ist, damit dieser auch ne Nachricht erhält und nicht erst beim nächsten mal einloggen ^^
 
Wenn du sowas machst wirst du ja einen Server brauchen. Wenn du da nichts selbst entwerfen willst solltest du dir mal JMS anschauen.

Da brauchst du dich nicht mehr drum zu kümmern, wie bei jemandem was aktualisiert wird. Die Nachrichten werden automatisch zugeschickt. Da kannst du das ganze sogar für eine Gruppe lösen.


MFG

zEriX
 
Du könntest es beispielsweise so machen:
Code:
import javax.swing.JFrame;
import javax.swing.JTextArea;

/**
 *
 * @author jweckbach
 */
public class Updater extends Thread{
    private JTextArea area = null;
    /** Creates a new instance of Updater */
    public Updater(JTextArea area) {
        this.area = area;
    }
    public void run() {
        while(true){
            area.setText("text"); // hier halt der text aus der datei, text in datei dann löschen
            try {
                Thread.sleep(5000);
            } catch (InterruptedException ex) {
                ex.printStackTrace();
            }
        }
    }
    
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        JFrame j = new JFrame();
        j.setSize(400,400);
        j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JTextArea area = new JTextArea();
        j.getContentPane().add(area);
        j.setVisible(true);
        new Updater(area).run();
        
    }

    
    
}


Allerdings muss ich mich da wie Zerix fragen, wieso ein Chat über eine TextDatei? Empfinde ich als sehr sinnlos..

*grüssle*
MeinerEiner

Danke für die Antwort,
Ok, des hab ich jetzt mal gemacht,
leider entsteht da mal wieder ein Problem.
Ich es zeigt zwar das Fenster an, machen kann man aber nix(nicht mal schließen), schätzungsweise wegen der Endlosschleife.
 
Wenn du sowas machst wirst du ja einen Server brauchen. Wenn du da nichts selbst entwerfen willst solltest du dir mal JMS anschauen.

Da brauchst du dich nicht mehr drum zu kümmern, wie bei jemandem was aktualisiert wird. Die Nachrichten werden automatisch zugeschickt. Da kannst du das ganze sogar für eine Gruppe lösen.


MFG

zEriX


Server und so ist alles kein Thema!
Ich müsste nur wissen wie ich des aktualisieren kann (und ich würde es gerne selber machen ;) , aber danke für deinen Tipp, werde ich mir merken) :D
 
Ich würde es dann aber auch in eine Datenbank machen und nicht in eine Text-datei.

Der Server schickt automatisch die Nachrichten an die Personen die angemeldet sind. Beim Client läuft die ganze Zeit ein Thread, der lauscht und wartet. Sobald er was empfängt wird dann ein Event ausgelöst, das die GUI aktualisiert. So braucht der andere gar nicht 20 Sekunden zu warten, sondern hat immer die aktuellen Nachrichten.

MFG

zEriX
 
Ich würde es dann aber auch in eine Datenbank machen und nicht in eine Text-datei.

Der Server schickt automatisch die Nachrichten an die Personen die angemeldet sind. Beim Client läuft die ganze Zeit ein Thread, der lauscht und wartet. Sobald er was empfängt wird dann ein Event ausgelöst, das die GUI aktualisiert. So braucht der andere gar nicht 20 Sekunden zu warten, sondern hat immer die aktuellen Nachrichten.

MFG

zEriX

Sorry ich glaube das ist noch ein bisschen zu viel für mich^^
Ich hab noch nicht mal n Plan wie ich des mit ner Datenbank mach, denn mit Datenbanken hab ich mich noch nicht großartig beschäftigt.
Ich bin erst im 2.lehrjahr, und da haben wir noch net so viel gelernt!
 
Ich sags mal so, wenn du später programmieren möchtest, solltest du dir auch einiges selbst anschauen und nicht darauf warten, dass es dir von anderen gezeigt wird.

Versuch es einfach mal so umzusetzen. Sieh es als gute Übung.

Mal als Stichwort für Datenbanken. Such einfach mal bei google nach JDBC, da wirst du eine Menge Beispiele finden.

Im zweiten Lehrjahr hab ich mal ein kleines Zip-Programm geschrieben und davor noch eine kleine Musik-Datenbank.


MFG

zEriX
 
Zurück