Textausgabe in jTextArea über andere Klasse

Status
Nicht offen für weitere Antworten.

Dodo2110

Mitglied
Guten Tag,

folgendes Problem:

Ich möchte Textzeilen, die in einer Klasse EntleihungenNachLesern erzeugt werden (innerhalb einer while-Schleife) über ein jTextArea im Hauptprogramm ausgeben lassen.

Java:
package Bücherei;
import java.sql.Connection;

import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.*;
import java.text.*;

public class EntleihungenNachLesern {

//...

	public EntleihungenNachLesern (String kundnr) 
	{
	    try {
	    	 //.........


	        while ( rs.next() ) {
	           

	           //...... 
	           
	                        
	             //Einträge in die Tabelle. Jeder Schleifendurchgang entspricht einer Zeile
	            
	            System.out.println("  " + lastISBN + "   |" + lastAutor + "|" +  lastTitel + "|  " + lastDatum + "    |" + Aussage );
	            System.out.println("  ---------------------------------------------------------------------------------------------------------");
	            
	                  
	        conn.close();
	    } catch (Exception e) {
	        System.err.println("Es gab einen Systemfehler! ");
	        System.err.println(e.getMessage());
	    }    
 
	}
	
	}

Die Konsolenausgabe sieht okay aus und ich würde sie gern so in die TextArea übernehmen und zwar nach der Betätigung des "Ok"-Buttons in der GUI:

Java:
public class BüchereiGUI extends javax.swing.JFrame {

//...

private void initGUI() {

//...

private JButton getJButtonOkEntleihungLeser() {
		if(jButtonOkEntleihungLeser == null) {
			jButtonOkEntleihungLeser = new JButton();
			jButtonOkEntleihungLeser.setText("Ok");
			jButtonOkEntleihungLeser.addActionListener(new JbuttonOkEntleihungLeser());
		}
		return jButtonOkEntleihungLeser;
	}
	
	class JbuttonOkEntleihungLeser implements ActionListener
	{
		 public void actionPerformed(ActionEvent e)		//aufgerufen, wenn ActionEvent von Ok kommt
	  {     
		EntleihungenNachLesern entles = new EntleihungenNachLesern (jTextFieldKundnrEntleihungLeser.getText()); 
		jTextAreaEntlEntleihungLeser.append("Hier sollte dann der Text stehen");
	  }
	 }

Gibt es eine einfache Möglichkeit die Textzeilen in der jTextArea anzeigen zu lassen, ohne extra eine neue Methode dafür zu erstellen?

Könnte man zum Beispiel die einzelnen Zeilen in einem Feld speichern und dieses dann übergeben?

Danke im Voraus,
Dodo
 

icarus2

Top Contributor
Also was ist genau das Problem?

Weisst du nicht wie Zeilenumbrüche funktionieren? Da kannst du bei Swing ja html verwenden.

Ich würde den String so speichern:

[Java]
final String NEW_ROW = "\n"; //New Row
[/Java]

Überall wo du nun eine neue Zeile möchtest einfach ..."Text" + NEW_ROW + "Text"...


Durch das NEW_ROW wird dann eine neue Zeile erstellt.


Oder hattest du ein ganz anderes Problem?

*Edit:
Ja, die einzelnen Textzeilen kannst du natürlich in einem Array speichern. Falls pro Zeile viel Text gibt, könnte man sich auch überlegen den Text aus einer .txt Datei zu laden, sodass der Code nicht voller Text ist nachher.
 

Dodo2110

Mitglied
*Edit:
Ja, die einzelnen Textzeilen kannst du natürlich in einem Array speichern. Falls pro Zeile viel Text gibt, könnte man sich auch überlegen den Text aus einer .txt Datei zu laden, sodass der Code nicht voller Text ist nachher.

Danke für die Antwort!

Ja genau darauf wollte ich hinaus! Ich möchte die Zeilen in einem Array speichern und dieses dann aus dem Hauptprogramm aufrufen (in der ActionPerformed Methode)
An dieser Stelle stehe ich allerdings auf dem Schlauch...

Gruß,
Dodo
 

icarus2

Top Contributor
Vielleicht hilft dir sowas hier:

[Java]
public void appendToJTextArea(String[] s){

final String NEW_ROW = "/n";

for(int i = 0; i < s.length; i++){
text += s + NEW_ROW;
}

try {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
area.append(text);
}
});
}catch(Exception e){
e.printStackTrace();
}

}
[/Java]

String text und JTextArea area sind dabei als Membervariablen gespeichert.



*Edit:
Falls du die Methode völlig unabhängig aufrufen möchtest in einer anderen Klasse kannst du die Methode auch so als static deklarieren und dann die entsprechenen Parameter übergeben.

[Java]
/**
* Sets the text of a JTextArea. The text is read from a String array. For
* each field of the array is a new row created.
*
* @param s - String Array
* @param area - JTextArea reference
*/
public static void appendToJTextArea(String[] s, final JTextArea area){

final String NEW_ROW = "/n";
String text = "";

for(int i = 0; i < s.length; i++){
text += s + NEW_ROW;
}

final String textToAppend = text; //must be final to be visible in anonymous class

try {
SwingUtilities.invokeLater(new Runnable(){
public void run(){
area.append(textToAppend);
}
});
}catch(Exception e){
e.printStackTrace();
}

}[/Java]

Falls etwas unklar ist einfach fragen ;-)
 
Zuletzt bearbeitet:

Dodo2110

Mitglied
Ich habe mir anhand deiner Vorschläge mal etwas überlegt:

In der Klasse EntleihungenNachLesern:
Java:
package Bücherei;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.*;
import java.text.*;
 
public class EntleihungenNachLesern {
 static String Ausgabe [];
int i=0;
//...
 
    public EntleihungenNachLesern (String kundnr) 
    {
        try {
             //.........
            while ( rs.next() ) {
               //......                  
                 //Einträge in die Tabelle. Jeder Schleifendurchgang entspricht einer Zeile
                
                System.out.println("  " + lastISBN + "   |" + lastAutor + "|" +  lastTitel + "|  " + lastDatum + "    |" + Aussage );
                System.out.println("  ---------------------------------------------------------------------------------------------------------");
          
// neu hinzugefügt

final String NEW_ROW = "/n";
Ausgabe[i] += ("  " + lastISBN + "   |" + lastAutor + "|" +  lastTitel + "|  " + lastDatum + "    |" + Aussage+ "" + NEW_ROW);         
i++;                      
            conn.close();
        } catch (Exception e) {
            System.err.println("Es gab einen Systemfehler! ");
            System.err.println(e.getMessage());
        } 
    }
    }
Zur Erläuterung: mit rs.next() wird geprüft, ob das Result-Set rs noch ein weiteres Element besitzt. Solange dem ist, läuft die while-Schleife weiter.

Es müsste sich doch nun so verhalten, dass mit jedem Durchlauf der while-Schleife eine "Zeile" in das Array "Ausgabe" geschmiert wird.

Liege ich damit richtig?


Aufruf im Hauptprogramm:

Java:
class JbuttonOkEntleihungLeser implements ActionListener
	{
		 public void actionPerformed(ActionEvent e)		//aufgerufen, wenn ActionEvent von Ok kommt
	  {     
		EntleihungenNachLesern entles = new EntleihungenNachLesern (jTextFieldKundnrEntleihungLeser.getText()); 
		jTextAreaEntlEntleihungLeser.append(""+EntleihungenNachLesern.Ausgabe);
	  }
	 }

Leider greift die Exception e und in der jTextArea wird "null" ausgegeben.

Ist der Ansatz so in Ordnung?

Gruß


EDIT
Böses Foul! Ich habe vergessen eine Schleife um das Array zu legen, bzw int i initialisiert anstatt es mit i++ hochzählen zu lassen. Peinlich, Peinlich :oops:

EDIT
Problem besteht immer noch
 
Zuletzt bearbeitet:

icarus2

Top Contributor
Was kommt den genau für eine Exception? Das Problem ist wahrscheinlich, dass du die GUI auf dem EventDispatchThread starten musst.
 

Dodo2110

Mitglied
Funktioniert, danke für die Denkanstöße!

:toll::applaus:

Ich werd in Kürze mal den Code hier Posten

Gruß,
Dodo

Edit:
Java:
public class EntleihungenNachLesern {

static String Ausgabe="" ;

/......

public EntleihungenNachLesern (String kundnr) 
	{
	    try {

/.....

  while ( rs.next() ) {

/.....

Ausgabe += ("" + lastISBN + "\t|\t" + lastAutor + "\t|\t" +  lastTitel + "\t|\t" + lastDatum + "\t|\t" + Aussage) + NEW_ROW;
Ausgabe += ("  -----------------------------------------------------------------------------------------------------------")+NEW_ROW;

War ganz einfach ;-)
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H GUI-Textausgabe Fehler AWT, Swing, JavaFX & SWT 5
N Textausgabe in neuem Fenster AWT, Swing, JavaFX & SWT 4
B Textausgabe erzwingen AWT, Swing, JavaFX & SWT 8
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
RedEagle Swing JTextArea ist leer AWT, Swing, JavaFX & SWT 13
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
K Swing 2 JTextArea parrallel scrollable AWT, Swing, JavaFX & SWT 16
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Bluedaishi JtextArea AWT, Swing, JavaFX & SWT 6
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
F JTextarea Steuern ~ consolenanbindung AWT, Swing, JavaFX & SWT 5
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
F JTextArea hat keinen Rahmen AWT, Swing, JavaFX & SWT 10
N JTextArea Events weiterleiten AWT, Swing, JavaFX & SWT 3
R JTextArea mit verschiedenen Textfarben AWT, Swing, JavaFX & SWT 6
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
HoloYoitsu jTextArea.setCaretPosition(); What am I doing wrong? AWT, Swing, JavaFX & SWT 0
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
M JTextArea - Leertaste "sperren" AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
M Swing JTextArea mit ScrollBar AWT, Swing, JavaFX & SWT 9
S Swing Zahl der Zeilenumbrüche in einer JTextArea bestimmen AWT, Swing, JavaFX & SWT 1
F Swing Caret in JTextArea vergrößern AWT, Swing, JavaFX & SWT 2
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
N JFrame änliches wie JTextArea? AWT, Swing, JavaFX & SWT 2
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
O JTextArea befüllen AWT, Swing, JavaFX & SWT 2
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
M JTextArea Zeile hinzufügen AWT, Swing, JavaFX & SWT 4
C JTextArea scrollt bei append(String) aus Threads nicht ans Ende AWT, Swing, JavaFX & SWT 7
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
A JTextArea - Zeichenbegrenzung nach .txt Datei import AWT, Swing, JavaFX & SWT 6
M Swing JScrollPane (Parent JTextArea) aktualisieren + neue Zeile AWT, Swing, JavaFX & SWT 5
Hoppelmann Swing Tasten in JTextArea blockieren AWT, Swing, JavaFX & SWT 2
S JTextArea Tastaturanschläge AWT, Swing, JavaFX & SWT 2
E Swing JTextArea in JFrame, wie nun WindowFocusListener implementieren? AWT, Swing, JavaFX & SWT 2
S Problem mit JButton und JTextArea AWT, Swing, JavaFX & SWT 2
J Swing Mitwachsende JTextArea+ JPanel AWT, Swing, JavaFX & SWT 4
P Swing JtextArea füllen mit setText AWT, Swing, JavaFX & SWT 7
M Probleme mit der Selektion einer JTextArea AWT, Swing, JavaFX & SWT 3
T Die Größe einer JTextArea an Ihren Parent JPanel anpassen. AWT, Swing, JavaFX & SWT 5
hdi Swing ListCellRenderer + JTextArea + LineWrap AWT, Swing, JavaFX & SWT 6
T ComponentOrientation in JTextArea AWT, Swing, JavaFX & SWT 3
H Hintergrundbild in jTextArea AWT, Swing, JavaFX & SWT 4
G Swing JTextArea mit fester Anzahl Spalten! AWT, Swing, JavaFX & SWT 10
G ein JTextArea in zwei JPanels AWT, Swing, JavaFX & SWT 2
L JTextArea mit JScrollPane AWT, Swing, JavaFX & SWT 7
padde479 Swing replace JTextArea funktioniert nicht AWT, Swing, JavaFX & SWT 2
L Zeilenumbrüche aus JTextArea MIT in Textdatei schreiben AWT, Swing, JavaFX & SWT 4
_dp jTextArea/jTextPanel Auto Höhe AWT, Swing, JavaFX & SWT 5
Ollek JTextArea - Feste Zeilenanzahl(8 Zeilen) AWT, Swing, JavaFX & SWT 3
S Swing JTextArea während der Laufzeit füllen AWT, Swing, JavaFX & SWT 5
Ollek Text in JTextField und JTextArea zur Laufzeit ändern AWT, Swing, JavaFX & SWT 6
P Datenelement anderer Klasse in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
P Scrollbar JTextArea AWT, Swing, JavaFX & SWT 23
M Swing Ausgabe in JTextArea verzögern AWT, Swing, JavaFX & SWT 7
T Swing jTextArea soll sich der Fenstergröße anpassen beim ziehen?? AWT, Swing, JavaFX & SWT 2
S System.out in JTextArea AWT, Swing, JavaFX & SWT 4
S Swing JTextArea - Bild auf/ab Tasten implementieren AWT, Swing, JavaFX & SWT 4
J JTextArea verschwindet bei resize vom JFrame AWT, Swing, JavaFX & SWT 2
VfL_Freak "setAccelerator/KeyStroke" bei JTextArea ? AWT, Swing, JavaFX & SWT 6
P Swing JTextArea - beim neuzeichnen bleibt manchmal weißer Kasten AWT, Swing, JavaFX & SWT 10
Dit_ JTextArea zu Zeile X scrollen AWT, Swing, JavaFX & SWT 4
H variable Höhe einer JTextArea (als Renderer/Editor) als Zelle einer JTable AWT, Swing, JavaFX & SWT 9
B Wechsel JTextArea und JComponent AWT, Swing, JavaFX & SWT 9
M [erledigt] Bestimmte Zeile aus JTextArea löschen AWT, Swing, JavaFX & SWT 3
G Swing JTable und JTextArea synchronisieren AWT, Swing, JavaFX & SWT 2
C JLabel, JTextArea, JScrollPane. repaint(); ? AWT, Swing, JavaFX & SWT 6
M JTextArea AWT, Swing, JavaFX & SWT 2
E Swing JTextArea Alternative? AWT, Swing, JavaFX & SWT 5
A Swing JTextArea über Frame hinaus anzeigen? AWT, Swing, JavaFX & SWT 2
S JInternalFrame oder JTextArea neu laden AWT, Swing, JavaFX & SWT 2
N JTextArea.setLineWrap Bug? AWT, Swing, JavaFX & SWT 3
N Swing JTextArea/JScrollpane: JScrollbar position AWT, Swing, JavaFX & SWT 8
I JTextArea mit Copy Paste Funktion AWT, Swing, JavaFX & SWT 7
M Swing JTextArea größe anpassen & setBackground liefer Nullpointer AWT, Swing, JavaFX & SWT 4
Plastagen JTextArea CaretPosition Aktualisierung AWT, Swing, JavaFX & SWT 10
C JTextField und JTextArea - Verständnisproblem AWT, Swing, JavaFX & SWT 14
B Exceptions werfen und in JTextArea ausgeben AWT, Swing, JavaFX & SWT 4
F new Line in JTextarea AWT, Swing, JavaFX & SWT 15
X Problem bei JTextArea und Thread.sleep() AWT, Swing, JavaFX & SWT 8
J Beliebtes Problem: Scrollbar in JTextArea AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben