2016-12-02 3 views
0

Ich schreibe einen Texteditor in Java, mit Swing. Meine Hauptkomponente, die ich benutze, um den Text einzugeben, ist JTextPane. Ich weiß, wie man markierten Text fett formatiert, aber ich möchte auch einfach fett drücken und neuen Text formatieren lassen. Hier ist mein Code:Schreiben mit Fett in Java mit Swing

static void boldSelection(JTextPane editor, JButton button){ 
    StyledDocument doc = (StyledDocument) editor.getDocument(); 
    int selectionEnd = editor.getSelectionEnd(); 
    int selectionStart = editor.getSelectionStart(); 
    if (selectionStart == selectionEnd) { 
     return; 
    } 
    Element element = doc.getCharacterElement(selectionStart); 
    AttributeSet as = element.getAttributes(); 

    MutableAttributeSet asNew = new SimpleAttributeSet(as.copyAttributes()); 
    StyleConstants.setBold(asNew, !StyleConstants.isBold(as)); 
    doc.setCharacterAttributes(selectionStart, editor.getSelectedText().length(), asNew, true); 
} 

Es funktioniert, aber ich habe keine Ahnung, wie es zu ändern, da ich die Länge zu setCharacterAttributes passieren muß. Um klar zu sein: das ist, was ich habe: Bolding selected text und das ist, was ich tun möchte: Entering bolded text

+0

Für eine bessere Hilfe früher, Posten [MCVE] oder [Kurz, Self Contained, Korrekt Beispiel] (http://www.sscce.org/). –

+0

würden Sie suchen eine Aktion Hörer haben, die überprüft, ob Sie sich in einem „bold“ Zustand sind, und wenn ja, gilt es für die eingegebenen Zeichen – Rogue

Antwort

2

Die EditorKit vom JTextPane verwendet ein Bold Action zusammen mit anderen gemeinsamen Aktionen unterstützt die möglicherweise von einem Editor verwendet werden . Sie müssen also keinen speziellen Code schreiben, sondern nur eine Swing-Komponente erstellen, um die Action zu verwenden.

Schauen Sie sich den Abschnitt von den Swing-Tutorial auf Text Component Features für ein funktionierendes Beispiel.

nur Das Tutorial Beispiel Menüpunkte verwenden, aber Sie können auch die Action verwenden, um eine JButton zu erstellen, um eine JToolBar hinzuzufügen.

+0

Das ist genau das, was ich gesucht habe. Vielen Dank. – Enri