本文共 1863 字,大约阅读时间需要 6 分钟。
package javafxui;import javafx.beans.value.ObservableValue;import javafx.scene.Scene;import javafx.scene.control.Label;import javafx.scene.control.ScrollPane;import javafx.scene.image.Image;import javafx.scene.image.ImageView;import javafx.scene.layout.Priority;import javafx.scene.layout.VBox;import javafx.stage.Stage;import javafx.application.Application;public class LearnUI extends Application { final ScrollPane sp = new ScrollPane(); final Image[] images = new Image[5]; final ImageView[] pics = new ImageView[5]; final VBox vb = new VBox(); final Label fileName = new Label(); final String [] imageNames = new String [] {"/res/pic1.jpg", "/res/pic2.jpg", "/res/pic3.jpg", "/res/pic4.jpg", "/res/pic5.jpg"}; @Override public void start(Stage stage) { VBox box = new VBox(); Scene scene = new Scene(box, 180, 180); stage.setScene(scene); stage.setTitle("Scroll Pane"); box.getChildren().addAll(sp, fileName); VBox.setVgrow(sp, Priority.ALWAYS); fileName.setLayoutX(30); fileName.setLayoutY(160); for (int i = 0; i < 5; i++) { images[i] = new Image(getClass().getResourceAsStream(imageNames[i])); pics[i] = new ImageView(images[i]); pics[i].setFitWidth(100); pics[i].setPreserveRatio(true); vb.getChildren().add(pics[i]); } sp.setVmax(440); sp.setPrefSize(115, 150); sp.setContent(vb); //ImageView对象限制图片的高为100像素。因此new_val.intValue()-1除以100的值就是在imageNames数组中当前图片的索引值。 sp.vvalueProperty().addListener((ObservableValue ov, Number old_val, Number new_val) -> { fileName.setText(imageNames[(new_val.intValue() - 1)/100]); }); stage.show(); } public static void main(String[] args) { Application.launch(args); }}
转载地址:http://ooimi.baihongyu.com/