2013-07-25 88 views
1

我在JScrollPane中有一個JEditoPane。我有一些文本內容包含一些預定義的標記。我將這些令牌的位置存儲在數據庫中。 當我將文本內容設置到JEditorPane中時,我使用HTML嵌入了令牌。我還添加HTML斷行來格式化內容。在JScrollPane上設置插入符號的位置

現在問題出現時,我想滾動到一個突出顯示的標記。似乎使用setCaretPosition(int)時,我存儲在數據庫中的令牌的開始位置不匹配。我知道這可能是因爲我在JEditorPane Document中的內容與HTML混合在一起。

那麼有沒有辦法在JEditorPane內容中搜索字符串,然後以某種方式得到字符串被找到的插入位置?

回答

0

字符串是否有共同點?如果他們這樣做,你可以嘗試使用java.util.scanner或/和java.util.regex.Matcher的組合。確保獲得您需要的正確的正則表達式。找到字符串後,首先得到indexOf的第一個字母,並設置插入符的位置。

Java Scanner

Java Matcher

1

這是你如何做到這一點(忽略不使用的最佳做法;)) -

public static void main(String[] args) { 

    final JEditorPane jEditorPane = new JEditorPane("text/html", "<h1>This is some header</h1>After this text would be the CARRET<br>This is some more text<br>And more"); 
    final JScrollPane jScrollPane = new JScrollPane(jEditorPane); 

    final JFrame jframe = new JFrame("HHHHHH"); 
    jframe.add(jScrollPane); 
    jframe.setSize(new Dimension(200, 200)); 
    jframe.setVisible(true); 

    final String text = jEditorPane.getText(); 
    final int index = text.indexOf("T"); 
    jEditorPane.setCaretPosition(index + 1); 

    while (true) { 
     try { 
      Thread.sleep(1000000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

這就是結果:

enter image description here

你呃d將indexof的結果存儲在數據庫中。

相關問題