2015-03-07 4 views
-2

У меня есть немного кода, который идет на сайт, находит текст и печатает его в стиле html в JLabel. Я хочу иметь возможность изменить цвет определенного слова в тексте (возможно, все слово «корова» будет зеленым). Вот код:Как выполнить поиск по тексту в JLabel?

public void code() throws IOException 
{ 
    Document document = Jsoup.connect("http://www.nbcwashington.com/weather/school-closings/").get(); 
    Elements tags = document.select("p"); 

    String txt = "<html>"; 
    for (Element tag : tags) { 
     txt += tag.text() + "<br/>"; 
    } 
    txt += "</html>"; 
    output.setText(txt); 

    } 
+0

'текстовый + = tag.text() + "
";' должно быть что-то вроде 'текстовый + = tag.text() replaceAll (" корова". , " cow ") +"
";'. Для получения более подробной справки отправьте сообщение [MCVE] (http://stackoverflow.com/help/mcve). BTW - лучше (более эффективно) использовать 'StringBuilder', чем конкатенацию строк. –

+0

Пробовал в обоих направлениях. Для andrew, как бы вы добавили несколько вещей? Иногда вещи говорят «Закрыто» или « » закрыты с нижними и т. Д. – robbbbin

+0

* «Как бы вы добавили несколько вещей?» * Опять же, немного громче на этот раз. ** Для получения более подробной справки разместите MCVE. ** –

ответ

0

вы можете проверить значение с помощью метода .equals .Вы можете использовать тег диапазона, чтобы цвет его.

public void code() throws IOException 
{ 
    Document document = Jsoup.connect("http://www.nbcwashington.com/weather/school-closings/").get(); 
    Elements tags = document.select("p"); 

    String txt = "<html>"; 
    for (Element tag : tags) { 
     if(tag.text().equals("cow")){ 
     txt += "<span style=\"color:#00FF00\">"+tag.text()+"</span><br/>"; 
     }else{ 
     txt += tag.text() + "<br/>"; 
     } 
    } 
    txt += "</html>"; 
    output.setText(txt); 

    } 
+0

tnx Третья была ошибкой –

+0

Второй - минус один, хотя бы для лености. Пожалуйста, спаси меня от проблемы (и измени ее). –

+0

У меня не получилось 2-е место .do U означает использование заменить все вместо .equals? –

2

У меня есть кусок кода, который идет на веб-сайт, находит текст, и выводит его из HTML стиля в JLabel

я нахожу работу с JTextPane и атрибутами стиля проще, чем работать с HTML.

Просто добавьте текст в текстовом окне как обычный текст, то вы можете искать текст и изменять атрибуты в соответствии с требованиями:

Непроверенные код будет что-то вроде:

JTextPane textPane = new JTextPane(); 
textPane.setText(...); 

SimpleAttributSet keyword = new SimpleAttributeSet(); 
StyleConstants.setForeground(keyword, Color.GREEN); 

StyledDocument doc = textPane.getStyledDocument(); 
int length = textPane.getDocument().getLength(); 
text = textPane.getDocument().getText(0, length); 
String search = "cow"; 
int offset = 0; 

while ((offset = text.indexOf(search, offset)) != -1) 
{ 
    doc.setCharacterAttributes(offset, search.length(), keyword, false); 
    offset += search.length(); 
} 

Вы можете также сделать JTextPane выглядеть как JLabel с помощью:

textPane.setOpaque(false); 
Смежные вопросы