2015-04-05 125 views
1

此代碼替換爲新的像這樣的選擇的話:如何突出顯示替換所選單詞的單詞?

String search = jTextField1.getText(); 
String replaced = jTextPane.getText().replace(search, jTextField2.getText()); 
jTextPane.setText(replaced); 

什麼是設置的新詞,以黃色背景的最簡單的方法?

+0

兩個問題1.爲什麼,2,爲什麼沒有在文檔搜索,我敢肯定,甲骨文教程 - 如何使用TextComponents包含有關搜索和亮點文件 – mKorbel 2015-04-05 18:28:50

回答

1

您可以使用屬性:

Simple AttributeSet changed = new SimpleAttributeSet(); 
StyleConstants.setForeground(changed, Color.RED); 
StyleConstants.setBackground(changed, Color.YELLOW); 

// Change attributes on some text 

StyledDocument doc = textPane.getStyledDocument(); 
doc.setCharacterAttributes(20, 4, changed, false); 

查找/替換邏輯檢查:Find/Replace, Highlight Words。您將修改突出顯示的代碼以使用屬性。

1
private void changeAllActionPerformed(java.awt.event.ActionEvent evt) { 
     int j = 0; 
     int i = 0; 
     int index = 0; 
     String search = jTextField1.getText(); 
     String replaced = jTextPane.getText().replace(search, jTextField2.getText()); 
     jTextPane.setText(replaced); 
     String newtext = jTextField2.getText(); 

     try{ 
      if(!jTextField2.getText().isEmpty()){ 
       while(i != -1){ 
         i = jTextPane.getText().indexOf(newtext, j); 
        if(i == -1) 
         break; 
        if(evt.getSource() == changeAll|| evt.getSource() == changeAllButton){ 
         jTextPane.select(i, i + newtext.length()); 
        } 
        Color c = Color.YELLOW; 
        Style s = jTextPane.addStyle("TextBackground", null); 
        StyleConstants.setBackground(s, c); 
        StyledDocument d = jTextPane.getStyledDocument(); 
        d.setCharacterAttributes(jTextPane.getSelectionStart(), jTextPane.getSelectionEnd() - jTextPane.getSelectionStart(), jTextPane.getStyle("TextBackground"), false); 
        j = i + search.length(); 
        index++; 
       } 
       if (index > 0){ 
        jTextPane.grabFocus(); 
        jTextPane.setCaretPosition(jTextPane.getText().indexOf(newtext, 0)); 
       } 
     } catch (Exception e){ 
      jLabel.setText("error"); 
      System.err.print(e); 
} 
+0

匹配工作代碼示例'什麼是最簡單的如何將新單詞的背景設置爲黃色?' - 此解決方案不符合該要求。這將改變文本窗格中所有單詞的背景。例如,如果您在上面的代碼片段中將「0」更改爲「1」。即使沒有改變,所有的「-1」值也會被突出顯示。此外,由於我在我的答案中找到的鏈接中提供的原因,此代碼無法在Windows計算機上工作。 – camickr 2015-04-06 00:42:04

+0

但它適用於我的情況。 – lol 2015-04-06 10:12:34

+0

@lol,你的意思是它適用於你的情況?你甚至嘗試過我建議的嗎?將上面的代碼複製到文本窗格中,然後將「0」替換爲「1」。 「-1」的「1」不應該突出顯示,因爲您的查找/替換邏輯不會更改該值。 – camickr 2015-04-08 15:46:03