Hallo zusammen,
Ich bin dabei für ein Redaktionssystem ein HTML-Seitenerstellungsapplet zu schreiben. Es soll dem Benutzer nur eine eingeschränkte Auswahl an Formatierungsmöglichkeiten geben (fett, kursiv, Link). (Warum ausgerechnet in Java ist ein anderes Thema ;)
Ich denke, dass das Problem das ich derzeit habe, eher darauf beruht, dass ich noch nicht ganz verstanden habe wie die das javax.swing.text.html package arbeitet, als dass es ein wirkliches Problem ist, ich hoffe Ihr könnt mich in dem Punkt vieleicht erleuchten :)
folgendes Problem:
Ich markiere in einer JEditorPane-Instanz einen Text,
setze ihn nach einem Buttonclick auf einen "kursiv Button" mit fogender Methode kursiv:
void cmdKursiv_actionPerformed(ActionEvent e)
{
int start = wysiwygEditor.getSelectionStart();
int ende = wysiwygEditor.getSelectionEnd();
String text = wysiwygEditor.getSelectedText();
if (text == null)
{
text = "";
}
try
{
myDocument.remove(start,(ende-start));
myHtmlEditorKit.insertHTML(myDocument,start,"<i>"+text+"</i>",0,0,HTML.Tag.I);
}
catch (Exception ex)
{
ex.printStackTrace();
}
jTextArea1.setText(wysiwygEditor.getText());
wysiwygEditor.requestFocus();
}
funktioniert. Etwas später markiere ich den selben Text nochmal und setze ihn nack klicken auf einen anderen Button durch eine ähnliche Methode fett:
void cmdFett_actionPerformed(ActionEvent e)
{
... gleicher Code wie oben ...
myHtmlEditorKit.insertHTML(myDocument,start,"<b>"+text+"</b>",0,0,HTML.Tag.B);
... gleicher Code wie oben ...
}
Fett wird er nun, aber das kursiv wird aufgehoben.
Was ich sonst noch vorher so gemacht habe, was relevant sein könnte:
StyleSheet baseCSS = new StyleSheet();
HTMLEditorKit myHtmlEditorKit = new HTMLEditorKit();
HTMLDocument myDocument = (HTMLDocument)myHtmlEditorKit.createDefaultDocument();
String documentText = "Der frühe Vogel fängt den Wurm";
JEditorPane wysiwygEditor = new JEditorPane();
JButton cmdFett = new JButton(); //der Fett Button
JButton cmdKursiv = new JButton(); //der Kursiv Button
JTextArea jTextArea1 = new JTextArea(); //nur um mir den HTML-Quellcode zu zeigen
...
baseCSS.addRule("body { font-family: Arial; font-size: 14pt; color: black; background-color: white;text-align: left; vertical-align: top; }");
baseCSS.addRule("a { color: #cc0066; text-decoration: underline; }");
myHtmlEditorKit.setStyleSheet(baseCSS);
wysiwygEditor.setFont(new Font("Arial, Helvetica", Font.PLAIN, 10));
wysiwygEditor.setContentType("text/html");
wysiwygEditor.setEditorKit(myHtmlEditorKit);
wysiwygEditor.setDocument(myDocument);
wysiwygEditor.setText(documentText);
wysiwygEditor.addMouseListener(new BHE_Applet_wysiwygEditor_mouseAdapter(this));
wysiwygEditor.addInputMethodListener(new BHE_Applet_wysiwygEditor_inputMethodAdapter(this));
Vielen Dank und Grüße
M. Budde