выделение конкретной строки из jtextpane - PullRequest
2 голосов
/ 20 марта 2012

Я пытаюсь выделить определенные строки из JTextPane.Предположим, я хочу выделить 5-ю строку из JTextPane, как мне получить indexOf, чтобы выделить ее, если строки одинаковые?

Пример содержимого JTextPane, я хочу выделить 5-ю и11-я строка из нижних строк,

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 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 ]

4 голосов
/ 20 марта 2012

1) hilit.removeAllHighlights(); не работает корректно во всех случаях, у вас есть заполнение массивов Highlighter [] ,

2) у вас есть извлечение Document (Model for JTextComponents) из учебника JTextComponents, , в котором говорится о поиске в документе , затем вы можете оформить текст в JTextPane (Я говорю о простейшем способе, есть способы определения содержимого в конкретных строках, эти вещи могут усложнять изменение размера JTextComponents)

3) Я оставляю ответ про Columns и Rows с JTextComponents за @Stanislav

3 голосов
/ 20 марта 2012

Я предполагаю, что ваша модель HTMLDocument, которая на самом деле не ориентирована на линию. В качестве альтернативы рассмотрим JList и пользовательский рендер, используя JTextPane.

...