Frage

Ist es möglich, die Hintergrundfarbe eines Absatzes in Java Swing zu ändern? Ich versuchte es mit dem setParagraphAttributes Verfahren (Code unten) gesetzt, aber scheint nicht zu funktionieren.

    StyledDocument doc = textPanel.getStyledDocument();
    Style style = textPanel.addStyle("Hightlight background", null);
    StyleConstants.setBackground(style, Color.red);

    Style logicalStyle = textPanel.getLogicalStyle();
    doc.setParagraphAttributes(textPanel.getSelectionStart(), 1, textPanel.getStyle("Hightlight background"), true);
    textPanel.setLogicalStyle(logicalStyle);
War es hilfreich?

Lösung

UPDATE: Ich habe gerade herausgefunden über eine Klasse namens Highlighter.I glaubt nicht, sollten Sie den setBackground Stil werden. Verwenden Sie die DefaultHighlighter Klasse statt.

Highlighter h = textPanel.getHighlighter();
h.addHighlight(1, 10, new DefaultHighlighter.DefaultHighlightPainter(
            Color.red));

Die ersten beiden Parameter des addHighlight Verfahren sind nichts anderes als der Startindex und endet Index des Textes Sie hervorheben möchten. Sie können diese Methode mehr nennen timesto diskontinuierliche Textzeilen zu markieren.

ALTE ANTWORT:

Ich habe keine Ahnung, warum die setParagraphAttributes Methode scheint nicht zu funktionieren. Aber dies zu tun scheint zu funktionieren.

    doc.insertString(0, "Hello World", textPanel.getStyle("Hightlight background"));

Vielleicht können Sie jetzt einen Hack dieses Problem umgehen ...

Andere Tipps

ich benutze:

SimpleAttributeSet background = new SimpleAttributeSet();
StyleConstants.setBackground(background, Color.RED);

Dann können Sie vorhandene Attribute ändern mit:

doc.setParagraphAttributes(0, doc.getLength(), background, false);

oder fügen Sie Attribute mit dem Text:

doc.insertString(doc.getLength(), "\nEnd of text", background );

Einfache Möglichkeit, die Hintergrundfarbe des ausgewählten Textes oder Absatzes zu ändern.

  //choose color from JColorchooser
  Color color = colorChooser.getColor();

  //starting position of selected Text
  int start = textPane.getSelectedStart();

  // end position of the selected Text
  int end = textPane.getSelectionEnd();

  // style document of text pane where we change the background of the text
  StyledDocument style = textPane.getStyledDocument();

  // this old attribute set of selected Text;
  AttributeSet oldSet = style.getCharacterElement(end-1).getAttributes();

  // style context for creating new attribute set.
  StyleContext sc = StyleContext.getDefaultStyleContext();

  // new attribute set with new background color
  AttributeSet s = sc.addAttribute(oldSet, StyleConstants.Background, color);

 // set the Attribute set in the selected text
  style.setCharacterAttributes(start, end- start, s, true);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top