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);
}
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
) fromJTextComponents
, tutorial talking about searching in the Document, then you can styled text intoJTextPane
(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
andRows
fromJTextComponents
for@Stanislav
I'm guessing your model is
HTMLDocument
, which isn't really line oriented. Alternatively, consider aJList
and custom renderer usingJTextPane
.