2016-11-09 17 views
1

我必須編碼全文搜索。如果找到該單詞,則會突出顯示該單詞,如果按下「下一步」按鈕,則會突出顯示文本中的下一個單詞,依此類推。但挑戰是,文本中更深層次的詞語必須在窗口中間突出顯示。意思是,文本必須自動滾動到突出顯示的單詞。我在Stackoverflow上閱讀了幾篇文章,但是我無法實現它。搜索文本並自動向下滾動

這是我找到了Methode:

findButton.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { 
      @Override 
      public void handle(MouseEvent e) { 
       errorText.setText(""); 
       if (textFieldFind.getText() != null) { 
        findWord = Pattern.compile(textFieldFind.getText(), Pattern.CASE_INSENSITIVE); 
        matcher = findWord.matcher(textArea.getText()); 
        if (matchCase.isSelected()) { 
         findWord = Pattern.compile(textFieldFind.getText()); 
         matcher = findWord.matcher(textArea.getText()); 
        } 
        if (matcher.find()) { 
         textArea.selectRange(matcher.start(), matcher.end()); 
         textArea.scr 
        } 
       } else { 
        errorText.setText("Missing search key"); 
       } 
      } 
     }); 

這是我的 '下一步' 按鈕梅索德:

 nextButton.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>() { 
      @Override 
      public void handle(MouseEvent e) { 
       if (matcher.find()) { 
        scroll.setVvalue(0.5); 
        textArea.selectRange(matcher.start(), matcher.end()); 
       } 
      } 
     }); 
+0

你可以包括你已經使用的任何代碼到目前爲止,我們可以幫助用您嘗試的代碼來調試問題,或者看看您想要更清楚地做什麼?根據我的理解,您想突出顯示不在列表中的文本框中的文本?並且當在文本中找到一個單詞時,讓它自動滾動,這樣該單詞就可以看到了嗎? – D3181

+0

是的,自動滾動,這個詞是在窗口的中間。目前,突出顯示的單詞是可見的,但在窗口的底部。 – Marta

+0

我在這裏猜測,但也許你可以使用textarea.setScrollTop(positionOfMatchInt);我會玩數字positionOfMatchInt - 100.在你的情況textArea.setScrollTop(matcher.start()); – Sedrick

回答

1

嘗試是這樣的:

Platform.runLater(()->textArea.setScrollTop(matcher.start())); 

這爲我工作