Hallo,
ich programmiere zur Zeit einen Editor, mit dem 2 Benutzer über das Netzwerk zusammen schreiben können. Jeder Benutzer bekommt dabei eine Farbe zugewiesen. Zudem hat der Benutzer die Möglichkeit den Text bold, italic und underline zu formatieren.
Doch hier ist das Problem.
Formatiert ein Benutzer eine markierte Textstelle bold, so wird jedes einzelne Zeichen inklusive Offset und Formatierungsinformation an den anderen Benutzer übertragen.
Dieser soll dann den Text (also das übertragene Zeichen) mit der folgenden Methode auch bold formatieren:
Die Methode editorPane.getCharacterAttributes() liefert jedoch immer ein leeres AttributSet.
Wenn ich das Caret eine Position weiter nach rechts setze, so funktioniert die Formatierung zwar, jedoch verschieben sich die markierten Farben um eine Position nach links.
Gibt es eine Lösung für dsa Problem?
Gruß
Sascha
ich programmiere zur Zeit einen Editor, mit dem 2 Benutzer über das Netzwerk zusammen schreiben können. Jeder Benutzer bekommt dabei eine Farbe zugewiesen. Zudem hat der Benutzer die Möglichkeit den Text bold, italic und underline zu formatieren.
Doch hier ist das Problem.
Formatiert ein Benutzer eine markierte Textstelle bold, so wird jedes einzelne Zeichen inklusive Offset und Formatierungsinformation an den anderen Benutzer übertragen.
Dieser soll dann den Text (also das übertragene Zeichen) mit der folgenden Methode auch bold formatieren:
Code:
public void boldText(int start, int len) {
System.out.println("boldText(" + start + ", " + len + ")");
SimpleAttributeSet s; // = new SimpleAttributeSet();
editorPane.setCaretPosition(0);
// set marked text bold
for (int i = start; i < start + len; i++) {
editorPane.setCaretPosition(i);
s = new SimpleAttributeSet(editorPane.getCharacterAttributes());
System.out.println(s);
StyleConstants.setBold(s, true);
((DefaultStyledDocument) editorPane.getDocument())
.setCharacterAttributes(i, len, s, true);
StyleConstants.setBold(s, false);
}
}
Die Methode editorPane.getCharacterAttributes() liefert jedoch immer ein leeres AttributSet.
Wenn ich das Caret eine Position weiter nach rechts setze, so funktioniert die Formatierung zwar, jedoch verschieben sich die markierten Farben um eine Position nach links.
Gibt es eine Lösung für dsa Problem?
Gruß
Sascha