Output in TextArea

Status
Nicht offen für weitere Antworten.

rtt

Bekanntes Mitglied
Hi,
wie kann ich folgendes machen:

Ich habe in einer Klasse x einen output [ System.out.println("test"); ]
Wie kann ich diesen output in einer anderen Klasse y in einer textarea darstellen?

Hintergrund:
Ich habe meine Gui in eine externe Klasse gepackt, damit mir in meiner Hauptklasse die Übersicht nicht
flöten geht. Nun möchte ich, dass meine Meldungen in der Textarea in der Gui erscheint.

Danke schonmal.
Gruß Robin
 
ähm, ich blick da nicht ganz durch. Bin noch Java-Neuling.
Was muß ich denn da draus nehmen? :?

Gruß Robin
 
einfachste möglichkeit: Klasse y kennt die TextArea der Klasse x und schreibt anstatt System.out.println(....) einfach area.append(...).

dann gäbs noch kompliziertere, aber bessere Möglichkeiten wie Observer pattern bzw. Logger
 
wie meinst du das mit y kennt die Textarea.
Wie sieht sowas eigentlich aus?
Gruß Robin
 
Du musst in deiner Hauptklasse die textarea aus deiner GUI-Klasse bekannt machen.

Bsp.:

Klasse GUI:

private JTextArea area = JTextArea();

nun brauchst du noch ne get-Methode um die area zu übergeben (nach deinem konstruktor der KLasse GUI):

KLasse GUI:

public TextArea getArea() {

return area;

}

jetzt eine instanz der klasse gui in deiner hauptklasse erstellen:

KLasseGui gui = new KLasseGui();

in der hauptklasse machst du nun folgendes an der Stelle wo der Text hineingeschrieben werden soll:

this.gui.getArea().append("TEXT");
 
hab ich jetzt mal so probiert, nur gibt er mir eine Fehlermeldung: incompatible types in der Methode TextArea aus.

was hab ich falsch gemacht?
 
Sorry, muss natürlich heißen:

public JTextArea getArea() {

return area;

}

is ja schließlich ne JTExtArea und keine TextArea.
 
hallo,
ich habe durch die Suchfunktion dieses Thema gefunden, da ich ein aehnliches Problem habe!
Ich soll hier in der UNI ein Programm erstellen mit einer GUI. In der GUI sind folgende Objekte enthalten:
1.3 Buttons zum starten von 3 verschiedenen Threads
2.Ein TextArea zum Anzeigen der Threads
3.Ein TextField zum eingeben der Loops, die ein Thread ablaufen soll
4.Ein OK button zum setzen der Loop variable?!(bin mir nicht sicher)
5.Ein Clear Button der den Inhalt im TextArea loescht

Alle drei Threads haben dieselbe Funktionsweise!
Hier ein Beispiel
class ThreadA:
Java:
class ThreadA extends Thread {
    
    public void run() {
        synchronized(this) {
            for (int i=0; i<20; i++){
//                try {
//                sleep(10000);
//             }
//             catch(InterruptedException e) {
//                 System.out.println("");
//             }
               System.out.println("ThreadA number :" +i);
               //text.append("ThreadA number :" +i);
           }
    }
}
}

Bisher habe ich in einer anderen Klasse, ein Frame erstellt, das mir alles oben erlaeuterte darstellt.
Ich habe nun das Problem, das beim druecken auf die Buttons, die Ausgabe im Terminal Fenster geschieht, aber ich weiss (Programmiertechnisch) nicht wie ich es moeglich machen soll, das ich die Ausgabe in meinem TextArea erzwinge!?

Hier ist die Klasse, in der ich das Frame initialisiere!
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.*;
import java.io.*;


public class ThreadTester extends JFrame {
    
    //Declaration of variables
    //private JTextArea text = JTextArea();
    
    ThreadA a = new ThreadA ();
    ThreadB b = new ThreadB ();
    ThreadC c = new ThreadC ();
    //definition of variables
    //double number1, number2, number3;
    //JTextField        = new JTextField();
    JButton threada   = new JButton();
    JButton threadb   = new JButton();
    JButton threadc   = new JButton();
    JTextArea text    = new JTextArea(10, 25);
    JTextField loop   = new JTextField();
    JButton ok        = new JButton();
    JButton clear     = new JButton();
    //constructor 
    public ThreadTester (String Title) {
    //initialize frame
    super (Title);
    addWindowListener (new WindowAdapter() {
        public void windowClosing (WindowEvent evt) {System.exit(0);}
        });
        setSize(300, 300);
        getContentPane().setLayout(new FlowLayout());
    //frame components
        threada.setText("ThreadA");
        getContentPane().add(threada, BorderLayout.CENTER);
        threada.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent evt) {
                threadaActionPerformed (evt);
            }
        });
                    
        threadb.setText("ThreadB");
        getContentPane().add(threadb, BorderLayout.CENTER);
        threadb.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent evt) {
                threadbActionPerformed (evt);
            }
        });

        threadc.setText("ThreadC");
        getContentPane().add(threadc, BorderLayout.CENTER);
        threadc.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent evt) {
                threadcActionPerformed (evt);
            }
        });
        
        //text.setText("");
        text.setEnabled( false );
        getContentPane().add( text );
        
        //Definition of TextField
        getContentPane().add(new Label("Loops:"));
        loop.setColumns(5); 
        //text.setRows(25);
        getContentPane().add(loop, BorderLayout.CENTER);
        
        ok.setText("OK");
        getContentPane().add(ok, BorderLayout.CENTER);
        /*ok.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent evt) {
                okActionPerformed (evt);
            }
        });*/

        clear.setText("CLEAR");
        getContentPane().add(clear, BorderLayout.CENTER);
        clear.addActionListener (new ActionListener () {
            public void actionPerformed (ActionEvent evt) {
                clearActionPerformed (evt);
            }
        });        
    }
        //frame methods:
        //When Button pressed start Thread A
        public void threadaActionPerformed (ActionEvent evt) {
            a.start();
        }
        //When Button pressed start Thread B
        public void clearActionPerformed (ActionEvent evt) {
            text.setText("");
        }
        public void threadbActionPerformed (ActionEvent evt) {
            b.start();
        }
        //When Button pressed start Thread C
        public void threadcActionPerformed (ActionEvent evt) {
            c.start();
        }
        public JTextArea getArea() {
            return text;
        }
        //Main Programm
        public static void main (String [] args) {
            new ThreadTester("ThreadTester").setVisible(true);
            //new ThreadTester gui = new ThreadTester();
            //this.gui.getArea().append("TEXT");
 
        
//          A.setPriority(1);
//          C.setPriority(9);
//          B.setPriority(2);
        
        
//         A.start();
//         B.start();
//         C.start();
        }
    }


      
//     public static void main (String args[]) {
//         new Calculator("BASIC CALCULATOR").setVisible(true);

[/javqa]

PS: Ich hoffe es klappt mit dem PASTE des Java Codes, bitte um verzeihung, wenn es nicht klappt!
Freue mich auf gute Ratschlaege, bis dann gruss Leutnant(hab mein pw verlegt *grml*)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben