JavaFX ScrollPane佈局

滾動窗口提供UI元素的可滾動視圖。
我們使用可滾動面板,當需要顯示有限的空間大內容。可滾動窗格視口,其將顯示內容的一部分,並且在必要時提供滾動條。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage stage) {
        stage.setWidth(500);
        stage.setHeight(500);
        Scene scene = new Scene(new Group());

        VBox root = new VBox();     

        final WebView browser = new WebView();
        final WebEngine webEngine = browser.getEngine();


        ScrollPane scrollPane = new ScrollPane();
        scrollPane.setContent(browser);
        webEngine.loadContent("<b>yes? this is default content load.</b>");

        root.getChildren().addAll(scrollPane);
        scene.setRoot(root);

        stage.setScene(scene);
        stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

上面的代碼生成以下結果。

JavaFX

創建滾動窗格

以下代碼使用jpg文件創建一個圖像,並將該圖像添加到滾動窗格。如果圖像較大,滾動窗格將顯示滾動條,我們可以使用它來查看隱藏的部分。

Image img = new Image(getClass().getResourceAsStream("yourImage.jpg"));
ScrollPane sp = new ScrollPane();
sp.setContent(new ImageView(img));

可滾動ScrollPane

調用setPannable(true)方法通過單擊並移動鼠標光標來預覽圖像。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;

public class Main extends Application {
    @Override
    public void start(Stage stage) {
        Group root = new Group();
        Scene scene = new Scene(root, 500, 200);
        stage.setScene(scene);// =>  w w W .Y I I B  A I .c O  M

        Rectangle rect = new Rectangle(200, 200, Color.RED);
        ScrollPane s1 = new ScrollPane();
        s1.setPannable(true);
        s1.setPrefSize(120, 120);
        s1.setContent(rect);

        root.getChildren().add(s1);
        stage.show();
    }
    public static void main(String[] args) {
        launch(args);
    }
}

上面的代碼生成以下結果。

JavaFX

滾動條策略

我們可以控制何時顯示滾動條的策略:

  • 總是
  • 決不
  • 必要時

setHbar策略和setar策略方法分別爲水平和垂直滾動條指定滾動條策略。

sp.setHbarPolicy(ScrollBarPolicy.NEVER);
sp.setVbarPolicy(ScrollBarPolicy.ALWAYS);

調整滾動窗格中的組件大小

setFitToWidthsetFitToHeight方法設置爲true以匹配特定維度。

默認情況下,FIT_TO_WIDTHFIT_TO_HEIGHT屬性都爲false,可調整大小的內容保持其原始大小。

以下代碼顯示如何設置JScrollPane以適合寬度。

import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollPane;
import javafx.scene.layout.VBox;
import javafx.scene.web.WebEngine;
import javafx.scene.web.WebView;
import javafx.stage.Stage;
// from => Ww w . yI i  baI.C O  m 
public class Main extends Application {

    @Override
    public void start(Stage stage) {
        stage.setWidth(500);
        stage.setHeight(500);
        Scene scene = new Scene(new Group());

        VBox root = new VBox();     

        final WebView browser = new WebView();
        final WebEngine webEngine = browser.getEngine();


        ScrollPane scrollPane = new ScrollPane();
        scrollPane.setFitToWidth(true);

        scrollPane.setContent(browser);
        webEngine.loadContent("<b>asdf</b>");

        root.getChildren().addAll(scrollPane);
        scene.setRoot(root);

        stage.setScene(scene);
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

上面的代碼生成以下結果。

滾動操作

ScrollPane類允許檢索和設置水平和垂直方向上的內容的當前值,最小值和最大值。
以下代碼顯示如何處理JScrollPane垂直值和水平值更改事件。

JavaFX