highlighting a specific line from jtextpane

2019-02-26 12:31发布

I am trying to highlight a specific lines from JTextPane. Suppose I want to highlight the 5th line from JTextPane, how do I get the indexOf it to highlight it if the lines are same?

Example content of JTextPane, I want to higlight 5th and 11th line from below lines,

This text is from stackoverflow
This text is from stackoverflow
This text is from stackoverflow
This text is from stackoverflow
This text is from stackoverflow
This text is from stackoverflow
This text is from stackoverflow
This text is from google
This text is from yahoo
This text is from yahoo
This text is from yahoo
This text is from yahoo

Code:

//Code to highlight
//text is jtextpane
final static Color HILIT_COLOR = Color.LIGHT_GRAY;
DefaultHighlighter hilit = new DefaultHighlighter();
DefaultHighlightPainter painter = new  
    DefaultHighlighter.DefaultHighlightPainter(HILIT_COLOR);
text.setHighlighter(hilit);

hilit.removeAllHighlights();
String s = text.getText();
try {
    hilit.addHighlight(0, 10, painter);
} catch (BadLocationException ex) {
    Logger.getLogger(TextLines.class.getName()).log(Level.SEVERE, null, ex);
}

2条回答
\"骚年 ilove
2楼-- · 2019-02-26 13:14

1) hilit.removeAllHighlights(); doens't works correctly in all of cases, you have fill arrays of Highlighter[],

2) you have extract Document (Model for JTextComponents) from JTextComponents, tutorial talking about searching in the Document, then you can styled text into JTextPane(I'm talking about easiest way, there are ways how to determine contents in the concrete row(s), those things could be complicating the resize of JTextComponents)

3) I leaving answer about Columns and Rows from JTextComponents for @Stanislav

查看更多
对你真心纯属浪费
3楼-- · 2019-02-26 13:29

I'm guessing your model is HTMLDocument, which isn't really line oriented. Alternatively, consider a JList and custom renderer using JTextPane.

查看更多
登录 后发表回答