PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : JEditorPane und Headlines



the Oracle
20.07.2006, 09:38
Hallo liebe Community!

Ich habe ein Problem mit Java - JEditorPane - und bräuchte eure Hilfe dabei.
Ich würde gerne, wenn man einen Button drückt, eine neue Headline einfügen.
Soweit so gut, das würde mit dieser Action ja funktionieren:

new HTMLEditorKit.InsertHTMLTextAction("h1", "<h1></h1>", HTML.Tag.BODY, HTML.Tag.H1);
doch dann wird eine komplett neue Headline ohne Text eingefügt.
Ich will aber, dass der selektierte Text dann als Headline angezeigt wird.

Hoffe ihr könnt mir helfen.

mfg

hazelnoot
20.07.2006, 11:59
ich weis zwar nicht genau was du mit headline meinst aber waenn du diesen text ganz oben in die pane einfuegen willst wuerd ich das so machen:

String headline = "headline";
jeditorPane.setText(headline + jeditorPane.getText());

ich weis nicht ob das das ist was du wolltest... aber so kannst du auf jeden fall einen text vor den anderen text in die pane einfuegen

mfg hazelnoot

the Oracle
20.07.2006, 14:00
nein da hast du mich falsch verstanden.

Ich will einen Text den ich bereits in die EditorPane eingefügt habe als Headline (<h1></h1) darstellen - sprich in die spitzen Klammern einfügen.

Der oben angeführte Code erstellt nämlich nur "<h1></h1>" aber klammert nicht den selektierten Text ein.

hazelnoot
20.07.2006, 14:23
hi!

ich hoffe ich habs nun richtig verstanden... ich hab dir mal einen beispielcode geschrieben! hoffe er hilft dir. habe ihn nicht getestet aber er muesste funktionieren. natuerlich koennte man ein paar variablen sparen aber fuer bessere lesbarkeit hab ich halt ein paar mehr verwaendet!



JEditorPane edit = new JEditorPane();

/*...*/

/*im action listener von dem jeweiligen button*/

int selStart = edit.getSelectionStart(), /*hohle startposition der selektierung*/
selEnd = edit.getSelectionEnd(); /*hohle endposition der selektierung*/

String whole = edit.getText(); /*hohle den ganzen text aus der textbox*/
String selekted = whole.subString(selStart, selEnd); /*hohle den text der selektiert wurde*/

/*aendere den selektierten text
in den fall muesste nur die variable selekted geaendert werden
also einfach ein <h1></h1> vorne und hinten eingefuegt oder wie du halt willst*/
/*...*/

/*waenn der selektierte text entspraechend geaendert wurde, kann man diesen geaenderten text einfuegen
(ueber den alten drueberschreiben)*/
edit.replaceSelection(selekted);


edit.setText(whole);


hoffe das ist das was du willst
mit diesem code kann man selektierten text eben ersetzen...

mfg hazelnoot

the Oracle
20.07.2006, 17:46
Soetwas in der Art hatte ich auch schon, doch gibt es Probleme damit:
1. Wenn ich den Text über substring herausfiltere, wird der falsche Text genommen.
2. Wenn ich den Text über editor.getSelectedText bekomme und dann einfüge wird der Text "<h1>text</h1>" auf die editorpane geschrieben und nicht text als Headline angezeigt.

mfg

hazelnoot
21.07.2006, 07:41
hi!

damit man mit setText html/rtf text einfuegen kann muss man glaub ich noch was setzen im JEditorPane... siehe doku da steht das beschrieben wie das geht:
http://java.sun.com/j2se/1.5.0/docs/api/index.html

(da ist dann ein verweis : "A text component to edit various kinds of content. You can find how-to information and examples of using editor panes in Using Text Components, a section in The Java Tutorial." und da wird das dann genau erklaert!!)

hoffe das hilft dir weiter!

mfg hazelnoot

the Oracle
22.07.2006, 18:47
Das Tutorial kenne ich schon. Dort wird nur erklärt wie man die JEditorPane benutzt und vorgefertigte Actions verwendet werden.