javafX初探(滾動條)

本節我們來介紹滾動條。

ScrollBar類可以讓我們在應用中建立滾動條。下圖展示了滾動條的三個部分,拇指健、左右按鈕和軌跡。

建立一個滾動條

ScrollBar sc = new ScrollBar();
sc.setMin(0);
sc.setMax(100);
sc.setValue(50);

 

我們可以使用setMin和setMax方法來設定滾動條的最小值和最大值,當我們移動拇指按鈕的時候,滾動條的值就會變化。我們也可以通過setValue方法來設定當前滾動條的值。預設情況下滾動條是水平的,然而,我們通過setOrientation方法設定成垂直的。

我們可以單擊左右按鈕使得滾動條以單位長度進行滾動。我們可以通過setUnitIncrement方法來設定單位長度。

還可以通過點選軌跡使得滾動條按照塊長度進行滾動。通過setBlockIncrement方法來設定塊長度。

使用滾動條

package com.chu.button;
import javafx.application.Application;
import javafx.beans.value.ObservableValue;
import javafx.geometry.Orientation;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.ScrollBar;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
/**
* 
* 這次的人民幣的匯率走低是因為美元週期的影響,具體不明白為什麼會影響到,但是我們知道是因為外在的因素影響了人民幣的貶值,
* 而不是我們中國的市場通貨膨脹造成的貶值。人民幣在國際上一貶值,進口貨物就會花更多的人民幣,就會造成資本外流,
* 國內的人民幣流通就少了,市場購買力就下降,這就會造成國內通貨緊縮(東西多,錢少),人民幣就會升值(這就是市場調節能力)。
* 然後就是物價下降,樓市崩盤。中國為了抑制這種情況出現,央行緊急降準。這就讓中國市場上多出很多流動資金,
* 把人民的購買力強行拉上來,人民幣多了,物價就不會下降,反而可能物價會上漲,相對應的人民幣就要貶值,所以房子可能就要更貴了。
* 
* 總之就是。國際上人民幣貶值,資本就會外流,在市場的調節下國內人民幣就會升值來抑制國際上的人民幣貶值。國內人民幣一升值,物價就
* 下降,樓市就要完蛋。然後央行放出好多錢,不讓人民幣升值。
* 
* @author chuer
* @Description:
* @date 2015年2月5日 上午10:51:23
* @version V1.0
*/
public class ScrollBarSample extends Application {
final ScrollBar sc = new ScrollBar();
final Image[] images = new Image[5];
final ImageView[] pics = new ImageView[5];
final VBox vb = new VBox();
DropShadow shadow = new DropShadow();
@Override
public void start(Stage stage) {
Group root = new Group();
Scene scene = new Scene(root, 500, 180);
scene.setFill(Color.BLACK);
stage.setScene(scene);
stage.setTitle("Scrollbar");
root.getChildren().addAll(vb, sc);
shadow.setColor(Color.GREY);
shadow.setOffsetX(2);
shadow.setOffsetY(2);
vb.setLayoutX(5);
vb.setSpacing(10);
sc.setLayoutX(scene.getWidth() - sc.getWidth());
sc.setMin(0);
sc.setOrientation(Orientation.VERTICAL);
sc.setPrefHeight(180);
sc.setMax(360);
sc.setUnitIncrement(10.0);
sc.setBlockIncrement(5.0);
for (int i = 0; i < 5; i  ) {
final Image image = images[i] = new Image(getClass()
.getResourceAsStream("fw"   (i   1)   ".jpg"));
final ImageView pic = pics[i] = new ImageView(images[i]);
pic.setEffect(shadow);
vb.getChildren().add(pics[i]);
}
sc.valueProperty().addListener((ov, old_val, new_val) -> {
vb.setLayoutY(-new_val.doubleValue());
});
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}

執行如下圖: