2016-11-09 4 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"); 
       } 
      } 
     }); 

は、これが私の '次へ' ボタンMethodeのである:

 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)を使用できます。あなたの場合、textArea.setScrollTop(matcher.start());という数字でpositionOfMatchInt - 100を再生します。 – Sedrick

答えて

1

はこのような何かを試してみてください:

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

これは私のために働いた

関連する問題