有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我正在使用JavaFX。本质上,我试图让一个按钮在你点击它时打开一个新的舞台、场景和窗格。

我正在开发一个guinjavafx。我想让我的第一个阶段中的按钮可以点击,点击后打开一个新的阶段,以便它显示另一个场景,其中包含另一组按钮和另一组图像

package application;

import javafx.application.Application;
import javafx.geometry.HPos;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.stage.Stage;
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.ColumnConstraints;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Font;


public class Main extends Application {
@Override
public void start(Stage primaryStage){

    GridPane gridpane = new GridPane();
    gridpane.setPadding(new Insets(11.5, 12.5, 13.5, 14.5));
    gridpane.setHgap(5.5);
    gridpane.setVgap(5.5);

    //create a label and add it to the "Dispense" stage
    Label lblTotal = new Label("Your total items for today is: ");
    lblTotal.setFont(Font.font("Times New Roman",17));
    lblTotal.setWrapText(true);

    //create new FlowPane to TEST 
    FlowPane flowpane = new FlowPane();
    flowpane.setPrefHeight(10);
    flowpane.setAlignment(Pos.TOP_CENTER);
    flowpane.getChildren().add(lblTotal);

    /** CREATE SECOND STAGE **/
    Stage stage2 = new Stage();
    stage2.setHeight(400);
    stage2.setWidth(350);

    //create buttons
    Button button1 = new Button("Candy");
    Button button2 = new Button("Gum");
    Button button3 = new Button("Drink");
    Button button4 = new Button("Chips");
    Button button5 = new Button("Done");
    Button button6 = new Button("Cancel");

    // add buttons to grid
    // position buttons on grid
    gridpane.add(button1, 0, 2);
    gridpane.add(button2, 0, 3);
    gridpane.add(button3, 0, 4);
    gridpane.add(button4, 0, 5);
    gridpane.add(button5, 0, 6);
    gridpane.add(button6, 0, 7);

    //sets alignment of buttons
    GridPane.setHalignment(button1, HPos.CENTER);
    GridPane.setHalignment(button2, HPos.CENTER);
    GridPane.setHalignment(button3, HPos.CENTER);
    GridPane.setHalignment(button4, HPos.CENTER);
    GridPane.setHalignment(button5, HPos.CENTER);
    GridPane.setHalignment(button6, HPos.CENTER);

    //create images 
    Image imgCandy = new Image("worms.jpg"); //creates image
    ImageView imageViewCandy = new ImageView(imgCandy); //displays the image
    imageViewCandy.setFitHeight(100); // sets the height of the "worms.jpg" image
    imageViewCandy.setFitWidth(100); // sets the width of the "worms.jpg" image

    Image imgGum = new Image("gum.jpg");
    ImageView imageViewGum = new ImageView(imgGum);
    imageViewGum.setFitHeight(100);
    imageViewGum.setFitWidth(100);

    Image imgDrink = new Image("soda.jpg");
    ImageView imageViewDrink = new ImageView(imgDrink);
    imageViewDrink.setFitHeight(100);
    imageViewDrink.setFitWidth(100);

    Image imgChips = new Image("chips.jpg");
    ImageView imageViewChips = new ImageView(imgChips);
    imageViewChips.setFitHeight(100);
    imageViewChips.setFitWidth(100);

    Image imgDone = new Image("done.png");
    ImageView imageViewDone = new ImageView(imgDone);
    imageViewDone.setFitHeight(100);
    imageViewDone.setFitWidth(100);

    // Add images to grid
    gridpane.add(imageViewCandy, 1, 2);
    gridpane.add(imageViewGum, 1, 3);
    gridpane.add(imageViewDrink, 1, 4);
    gridpane.add(imageViewChips, 1, 5);
    gridpane.add(imageViewDone, 1, 6);

    // sets each of the column size
    gridpane.getColumnConstraints().add(new ColumnConstraints(100));
    gridpane.getColumnConstraints().add(new ColumnConstraints(100));
    gridpane.getColumnConstraints().add(new ColumnConstraints(100));
    gridpane.getColumnConstraints().add(new ColumnConstraints(100));


    //creates a scene
    //titles the scene "Vending Machine"
    Scene scene = new Scene(gridpane, 350, 600);
    primaryStage.setTitle("Vending Machine");
    primaryStage.setScene(scene);
    primaryStage.show();

    /**Creates new scene and displays stage**/
    Scene scene2 = new Scene(flowpane, 400, 450);
    stage2.setTitle("Dispenser");
    stage2.setScene(scene2);
    stage2.show();

}

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

共 (1) 个答案

  1. # 1 楼答案

    使用按钮上的setOnAction方法向每个按钮添加事件处理程序:

    button1.setOnAction(e -> {
        // Create any hierarchy of nodes you want here
        HBox root = new HBox(new Label("Hello new stage"));
    
        // Create a new stage and and a scene to hold your root node
        Stage newStage = new Stage();
        newStage.setScene(new Scene(root));
    
        // Show the new stage
        newStage.show();
    });
    

    根节点可以是要在新阶段中显示的任何类型的节点