import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.stage.Stage; public class GalleryApp extends Application { public static final int APP_WIDTH = 500; public static final int APP_HEIGHT = 600; public static final int N_IMAGES = 5; private BorderPane mainPane; private Button bnPrev, bnNext; private Label lbImage; private Image[] imgArray; private ImageView[] ivArray; private int currentIndex; @Override public void start(Stage stage) { setupImages(); setupPane(); setupXXX(); Scene scene = new Scene(mainPane, APP_WIDTH, APP_HEIGHT); // stage setup: title, scene, show stage.setTitle("CS112 F24 GalleryApp"); stage.setScene(scene); stage.show(); } private void setupImages() { imgArray = new Image[N_IMAGES]; ivArray = new ImageView[N_IMAGES]; String prefix = "file:f"; for (int i = 0; i < N_IMAGES; ++i) { String fname = prefix + (i + 1) + ".png"; imgArray[i] = new Image(fname); ivArray[i] = new ImageView(imgArray[i]); } } private void setupPane() { mainPane = new BorderPane(); } private void setupXXX() { lbImage = new Label(); // Label("Text"); Label(imgView) lbImage.setGraphic(ivArray[currentIndex]); bnPrev = new Button("<"); bnNext = new Button(">"); bnPrev.setPrefHeight(APP_HEIGHT); bnNext.setPrefHeight(APP_HEIGHT); // action listener // TODO: handle wrap-around for prev/next bnPrev.setOnAction(e -> { }); bnNext.setOnAction(e -> { ++currentIndex; // wrap-around if (currentIndex == N_IMAGES) { currentIndex = 0; } lbImage.setGraphic(ivArray[currentIndex]); }); mainPane.setCenter(lbImage); mainPane.setLeft(bnPrev); mainPane.setRight(bnNext); } public static void main(String[] args) { launch(args); } }