2013-10-23 27 views
1

我在WebView中的滾動條有問題。我想當web視圖加載時,srollbar自動滾動到web視圖的結尾。 我該怎麼辦?如何在WebView中自動滾動到最後?

這是我的樣本

package sample; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.scene.Node; 
import javafx.scene.control.ScrollBar; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebView; 
import java.net.URL; 
import java.util.ResourceBundle; 
import java.util.Set; 
public class Controller implements Initializable { 
    @FXML 
    WebView webView; 
    @Override 
    public void initialize(URL url, ResourceBundle resourceBundle) { 
     loadWebView(); 
    } 
    private void loadWebView() { 
     webView.setStyle("-fx-background-color: #cccccc; -fx-border-color: #00a7c8"); 
     StringBuilder html= new StringBuilder().append("<html><body>"); 
     for (int i=0; i<100; i++) { 
      html.append("<h1>" + i + ". AAAAAAAAAAAA</h1></br>"); 
     } 
     html.append("</body></html>"); 
     Set<Node> nodes = webView.lookupAll(".scroll-bar"); 
     for (Node node : nodes) { 
      if (ScrollBar.class.isInstance(node)) { 
       System.out.println("Scrollbar here!!!"); 
       ScrollBar scroll = (ScrollBar) node; 
       scroll.setValue(scroll.getMax()); 
      } 
     } 
     WebEngine webEngine = webView.getEngine(); 
     webEngine.loadContent(html.toString()); 
    } 
} 

感謝4您的閱讀

回答

1

https://forums.oracle.com/message/11243184#11243184

package sample; 


import com.sun.javafx.scene.control.skin.ScrollBarSkin; 
import com.sun.webpane.sg.theme.ScrollBarThemeImpl; 
import javafx.beans.value.ChangeListener; 
import javafx.beans.value.ObservableValue; 
import javafx.collections.ListChangeListener; 
import javafx.event.EventHandler; 
import javafx.fxml.FXML; 
import javafx.fxml.Initializable; 
import javafx.geometry.Orientation; 
import javafx.scene.Node; 
import javafx.scene.control.ScrollBar; 
import javafx.scene.control.TextArea; 
import javafx.scene.web.WebEngine; 
import javafx.scene.web.WebEvent; 
import javafx.scene.web.WebView; 


import java.net.URL; 
import java.util.ResourceBundle; 
import java.util.Set; 


public class Controller implements Initializable { 
    @FXML 
    WebView webView; 


    @Override 
    public void initialize(URL url, ResourceBundle resourceBundle) { 
     loadWebView(); 
    } 


    private void loadWebView() { 
     webView.setStyle("-fx-background-color: #cccccc; -fx-border-color: #00a7c8"); 
     StringBuilder html= new StringBuilder().append("<html>"); 
     html.append("<head>"); 
     html.append(" <script language=\"javascript\" type=\"text/javascript\">"); 
     html.append("  function toBottom(){"); 
     html.append("   window.scrollTo(0, document.body.scrollHeight);"); 
     html.append("  }"); 
     html.append(" </script>"); 
     html.append("</head>"); 
     html.append("<body onload='toBottom()'>"); 


     for (int i=0; i<100; i++) { 
      html.append("<h1>" + i + ". AAAAAAAAAAAA</h1></br>"); 
     } 


     html.append("</body></html>"); 


     WebEngine webEngine = webView.getEngine(); 
     webEngine.loadContent(html.toString()); 
    } 
} 
+0

採取看看我們bPage.scrollToPosition方法。它可能有幫助。 – Amin

1

您loadContent電話後只要執行這個腳本:

webEngine.executeScript("window.scrollTo(0, document.body.scrollHeight);");