更改JTextPane中段落的背景颜色(Java Swing)

是否可以在Java Swing中更改段落的背景颜色?我试图使用setParagraphAttributes方法(下面的代码)来设置它,但似乎不起作用。更改JTextPane中段落的背景颜色(Java Swing)

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

回答:

UPDATE: 我只是发现了一类名为Highlighter.I不认为你应该使用的setBackground风格。改为使用DefaultHighlighter类。

Highlighter h = textPanel.getHighlighter(); 

h.addHighlight(1, 10, new DefaultHighlighter.DefaultHighlightPainter(

Color.red));

addHighlight方法的前两个参数不过是要突出显示的文本的起始索引和结束索引。您可以多次调用此方法突出显示不连续的文本行。

OLD答:

我不知道为什么似乎没有了setParagraphAttributes方法工作。但这样做似乎有效。

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

也许你可以工作一个黑客解决这个现在...

回答:

我用:

SimpleAttributeSet background = new SimpleAttributeSet(); 

StyleConstants.setBackground(background, Color.RED);

然后你可以使用改变现有的属性:

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

或者用文字添加属性:

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

回答:

简单的方法来改变选定的文本或段落的背景颜色。

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

以上是 更改JTextPane中段落的背景颜色(Java Swing) 的全部内容, 来源链接: utcz.com/qa/265923.html

回到顶部