getText() sinnlos bei HTMLEditorKit und JEditorPane!

Status
Nicht offen für weitere Antworten.

che

Bekanntes Mitglied
Hallo!

Ich habe hier ein kleines Problem mit getText(). Ich habe eine JEditorPane Komponente erstellt und dieser HTMLEditorKit als Editor zugewiesen. Möchte ich nun mit getText den Inhalt der JEditorPane Komponente abfragen, so liefert mir das System das HTML Gerüst und die aktuelle Eingabe, die ich in der JEditorPane Komponente gemacht habe. Ich kann es zwar verstehen, dass das HTML Gerüst zurückgeliefert wird, da HTMLEditorKit, aber ich möchte die HTML-Tags nicht, sondern lediglich meine Eingabe ohne den HTML Kram. Man könnte durch viel Mühe und Zeit auch dieses Problem lösen, aber gibt es vielleicht eine Operation oder ein Methode, die ich in der Doc übersehen haben könnte?

Grüsse, che
 
G

Guest

Gast
Code:
private void setHTMLEditor(JEditorPane editorPane){ 
        editorPane.setEditorKit(new HTMLEditorKit() { 
            public ViewFactory getViewFactory() { 
                return new HTMLEditorKit.HTMLFactory() { 
                    public View create(Element elem) { 
                        Object o = elem.getAttributes().getAttribute(StyleConstants.NameAttribute); 
                        if (o instanceof HTML.Tag) { 
                            HTML.Tag kind = (HTML.Tag) o; 
                            if (kind == HTML.Tag.INPUT ) 
                                return new FormView(elem) { 
                                    protected void submitData(String data) { 
                                        showData(data); 
                                    } 
                                }; 
                        } 
                        return super.create(elem); 
                    } 
                }; 
            } 
        }); 
    }

Sorry, ich begreife deine Lösung nicht. Ich ärgere mich schon seit einiger Zeit mit diesem Problem. Habe dies versucht: Den Text mit getText gelesen und den String auf HTML Tags untersucht und dann durch "" ersetzt. Ich dachte ich hätte das HTML Gerüst somit entfernt und würde als Resultat die rohe Eingabe erhalten -sowie man sie z.B. von JTextField erhält-, aber es funktionierte leider nicht. Bin für jeden Tipp dankbar...
 

André Uhres

Top Contributor
Die Methode submitData(..) der Klasse javax.swing.text.html.FormView ist für die Datenübertragung
verantwortlich. Die Methode wird hier für den HTML-Tag "input" (<input type='submit'>) aktiviert,
d.h. für den Knopf unten im Formular (<form>...</form>).
Der String "data" enthält die Daten des Formulars.
Er besteht aus key-value Paaren welche durch & getrennt sind:
"Vorname=Andre&Nachname=Uhres&Geschlecht=M%E4nnlich&Bemerkung=+++++++Ich+spreche+deutsch%2C+franz%F6sisch+und+englisch"
Dieser String wird an die Methode showData(..) weitergegeben um dort in einem Dialog angezeigt zuwerden.
 

che

Bekanntes Mitglied
Jetzt check ich das, ist leider nicht das was ich brauche. Wie schon erwähnt: Ich möchte aus einem JEditorPane, der einen HTMLEditorKit hat mit getText() den eingegebenen Text auslesen, aber OHNE das Html-Gerüst.
 

André Uhres

Top Contributor
che hat gesagt.:
Jetzt check ich das, ist leider nicht das was ich brauche.
Wie schon erwähnt: Ich möchte aus einem JEditorPane, der einen HTMLEditorKit hat
mit getText() den eingegebenen Text auslesen, aber OHNE das Html-Gerüst.
Mein Beispiel ist doch auch ein JEditorPane, der einen HTMLEditorKit hat
und wo ich (zwar nicht mit getText()) den eingegebenen Text auslese, OHNE das Html-Gerüst ???:L
 

Sky

Top Contributor
Beschäftige Dich mal mit dem Thema Document:

Code:
 JEditorPane pane = new JEditorPane ();
    pane.setContentType("text/html");
    pane.setText("abc");

    System.out.println(pane.getText()); // liefert "<html> ...."

    try {
      System.out.println( pane.getDocument().getText( 0, pane.getDocument().getLength() ) ); // liefert "abc"
    } catch( BadLocationException ex ) {
      ex.printStackTrace();
    }
 
G

Guest

Gast
It´s amazing. Thanks. Es funktioniert wunderbar. Die Klasse Document war mir bis zum heutigen Tag unbekannt...
 

che

Bekanntes Mitglied
Code:
pane.getDocument().getText( 0, pane.getDocument().getLength()

Damit sollte es eigentlich funktionieren, obwohl ich bis heute nicht weiß wie das intern funktioniert. Was benutzt du für eine Komponente ?
 

André Uhres

Top Contributor
Mein Code ist oben im zweiten Post (Html_Form.java).
PS: so wie der Code dort ist, funktioniert er. Aber mit getText() bekomme ich keinen der Werte aus den Eingabefeldern :(
 

André Uhres

Top Contributor
Naja, das Thema ist ja jetzt abgehakt. Ich muss wohl woanders suchen...

EDIT: Hier ist eine Alternative für INPUT Felder. Funzt leider nicht für SELECT und TEXTAREA:
Code:
       HTMLDocument doc = (HTMLDocument) editorPane.getDocument();
        ElementIterator it = new ElementIterator(doc);
        Element element;
        while ( (element = it.next()) != null ) {
            String el = element.getName();
            if (el.equals( HTML.Tag.INPUT.toString() )
//                    || el.equals( HTML.Tag.SELECT.toString() )
//                    || el.equals( HTML.Tag.TEXTAREA.toString() )
                    ) {
                AttributeSet as = element.getAttributes();
                Object value = as.getAttribute(HTML.Attribute.VALUE);
                if(value != null){
                    System.out.print(as.getAttribute(HTML.Attribute.NAME)+": ");
                    System.out.println(value);
                }
        }
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z textField.getText = null AWT, Swing, JavaFX & SWT 15
N Nur bei einem Textfiled Nullpointerexception bei getText() AWT, Swing, JavaFX & SWT 1
C JavaFX mit .setText() befülltes Textfield liefert anschließend mit .getText() den ursprünglichen Wert? AWT, Swing, JavaFX & SWT 1
J NullPointerException bei getText() AWT, Swing, JavaFX & SWT 3
blazingblade komischerweise probleme mit jtextfield.gettext() AWT, Swing, JavaFX & SWT 9
M Swing JTextField getText Mehtode übergeben in eine Klasse zu einer Rechnung AWT, Swing, JavaFX & SWT 1
R Swing JTextField getText() liefert leeren String AWT, Swing, JavaFX & SWT 6
E gettext() filtern ( nur bestimmten text wwiteverarbeiten) AWT, Swing, JavaFX & SWT 4
I Swing getText() AWT, Swing, JavaFX & SWT 7
O Swing JTextfield.getText() == empty? AWT, Swing, JavaFX & SWT 12
DasDogma Fehler bei getText() AWT, Swing, JavaFX & SWT 10
G null pointer mit getText AWT, Swing, JavaFX & SWT 2
S JTextfield + getText AWT, Swing, JavaFX & SWT 6
T JTextPane ignoriert HTML Zeilenumbruch <br> tag wegen eigenem HTMLEditorKit AWT, Swing, JavaFX & SWT 5
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
S Interner Verweis in HTMLEditorKit AWT, Swing, JavaFX & SWT 7
ChMaster JEditorPane / HTMLEditorKit AWT, Swing, JavaFX & SWT 3
P JEditorPane mit HTMLEditorKit Text ausrichten AWT, Swing, JavaFX & SWT 2
S ChangedCharSetException bei HTMLEditorKit.read() AWT, Swing, JavaFX & SWT 2
A HTMLEditorKit AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben