TextListener-Anfängerproblem

Hallo Leute,

ich habe Probleme einen TextListener für ein JTextArea-Feld einzufügen.
Ein TabbedPane besteht aus mehreren Registerkarten, wobei diese wiederum mit genau einer JTextArea gefüllt sind.
Das Programm funktioniert OHNE TextListener einwandfrei.

Hier der Code:

public class TextGesamtFenster extends JPanel implements ChangeListener, TextListener {

private JTabbedPane pane;
private JTextArea MyTextArea

//Konstruktor
public TextGesamtFenster() {
//FlowLayout setzen
setLayout(new FlowLayout(FlowLayout.LEFT,10,10));

//JTabbedPane instanzieren
pane = new JTabbedPane(JTabbedPane.TOP,JTabbedPane.WRAP_TAB_LAYOUT);
MyTextArea = new JTextArea();
//Automatischer Umbruch bei zu langer Zeile
MyTextArea.setLineWrap(true);
MyTextArea.setWrapStyleWord(true);
/* xx */ MyTextArea.addTextListener(new TextListener() {
public void textValueChanged(TextEvent e) {
//Irgendeine Aktion
}
});
pane.addTab(„Überschrift“,null,MyTextArea,„ToolTipText“);

…Hier würde MyTextArea2 (in einem neuem TabbedPane) kommen…

ChangeListener Method implementieren…

Die Zeile mit xx ergibt die Fehlermeldung (in Eclipse):
„Die Methode addTextListener ist für den Typ JTextArea nicht definiert“

Was habe ich denn da falsch gemacht? Der TextListener ist doch implementiert und die erforderliche Methode textValueChanged ist auch drin.

Ich habe mich an das Beispiel „Anonyme Implementierung von Interfaces“ aus
http://72.14.207.104/search?q=cache:bBa2iAmsr5AJ:www…
gehalten.

Wer kann mir helfen?

gruß
Oliver

Moien

ich habe Probleme einen TextListener für ein JTextArea-Feld
einzufügen.

Kann ich mir vorsstellen. Textlistener sind aus dem AWT und für TextAreas gedacht, aber nicht für JTextAreas (die aus dem swing-system stammen).

Bei javax.swing-Classen ist das (fast) alles neu implementiert worden. Man hat sich mehr auf Pattern (wie z.B. Model-View-Controller) gestützt. Deshalb muss man bei JTextarea über das Document gehen:

JTextarea.getDocument.addDocumentListener (dein-listener)

Und der Listener muss vom Typ Documentlistener sein. Der Documentlistener ist einen Zacken komplexer als der Textlistener, kann dafür aber auch mehr.

AWT und swing mischen (also aus der JTextArea eine TextArea machen) geht, bringt aber tabbedpanes durcheinander.

cu

Auch hallo.

Hallo Leute,

ich habe Probleme einen TextListener für ein JTextArea-Feld
einzufügen.

Welche Version des Java Compilers ? 1.4.x oder 1.5.x ?

Ein TabbedPane besteht aus mehreren Registerkarten, wobei
diese wiederum mit genau einer JTextArea gefüllt sind.
Das Programm funktioniert OHNE TextListener einwandfrei.

Die richtigen Packages sind auch dabei ?
Gemeint sind diese:

import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Font;
import java.awt.TextArea;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.TextEvent;
import java.awt.event.TextListener;

Unter http://www.dpunkt.de/java/Die_Sprache_Java/Objektori…
auf ‚AnonEdit.java‘ drücken

Hier der Code:

…bitte in Zukunft den pre-Tag verwenden :wink:
Und den Quellcode als Ganzes. Zur Not eine java-Datei online stellen.

public class TextGesamtFenster extends JPanel implements
ChangeListener, TextListener {

private JTabbedPane pane;
private JTextArea MyTextArea

//Konstruktor
public TextGesamtFenster() {
//FlowLayout setzen
setLayout(new FlowLayout(FlowLayout.LEFT,10,10));

//JTabbedPane instanzieren
pane = new
JTabbedPane(JTabbedPane.TOP,JTabbedPane.WRAP_TAB_LAYOUT);
MyTextArea = new JTextArea();
//Automatischer Umbruch bei zu langer Zeile
MyTextArea.setLineWrap(true);
MyTextArea.setWrapStyleWord(true);
/* xx */ MyTextArea.addTextListener(new TextListener() {
public void textValueChanged(TextEvent e) {
//Irgendeine Aktion
}
});

pane.addTab(„Überschrift“,null,MyTextArea,„ToolTipText“);

…Hier würde MyTextArea2 (in einem neuem TabbedPane)
kommen…

ChangeListener Method implementieren…

Die Zeile mit xx ergibt die Fehlermeldung (in Eclipse):

Version der Eclipse runtime ? Aktuell ist 3.1 und 3.2 Beta

„Die Methode addTextListener ist für den Typ JTextArea
nicht definiert“

Tja ja: http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/…

Was habe ich denn da falsch gemacht? Der TextListener ist doch
implementiert und die erforderliche Methode textValueChanged
ist auch drin.

[[[Moment: soll mit AWT und/oder Swing programmiert werden ? Das referenzierte Beispiel basiert nämlich auf AWT und der Problemcode auf Swing…]]] (dicke Klammern, da unsicher geworden)

HTH
mfg M.L.

Danke! Das hat mich weitergebracht!
Hallo pumpkin!

Mir war wohl der Unterschied zwischen TextArea und JTextarea nicht bewusst.
Danke für die ausführliche Erläuterung, das hat mir sehr geholfen.

Ich habe das ganze jetzt per FocusListener gelöst. Das klappt prima und ist für meine Zwecke auch noch geeignet.

Gruß
Oliver

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]