4

Java Swingで段落の背景色を変更することはできますか?setParagraphAttributesメソッド(以下のコード)を使用して設定しようとしましたが、機能しないようです。

    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);
4

3 に答える 3

3

更新: 蛍光ペンと呼ばれるクラスについて知りました。setbackgroundスタイルを使用する必要があるとは思いません。代わりにDefaultHighlighterクラスを使用してください。

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

addHighlightメソッドの最初の2つのパラメーターは、強調表示するテキストの開始インデックスと終了インデックスに他なりません。このメソッドを複数回呼び出して、テキストの不連続な行を強調表示できます。

古い答え:

setParagraphAttributesメソッドが機能しないように見える理由がわかりません。しかし、これを行うことはうまくいくようです。

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

多分あなたは今のところこれを回避するハックをすることができます...

于 2009-10-29T15:44:45.700 に答える
3

私が使う:

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

次に、以下を使用して既存の属性を変更できます。

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

または、テキストで属性を追加します。

doc.insertString(doc.getLength(), "\nEnd of text", background );
于 2009-10-29T15:54:07.990 に答える
0

選択したテキストまたは段落の背景色を変更する簡単な方法。

  //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);
于 2017-07-17T11:35:44.870 に答える