java - 为什么按钮没有显示在框架中?

标签 java javafx

我正在制作一个简单的程序来在 JavaFX 中切换场景。我创建了按钮对象,将它们添加到布局中,将布局添加到场景中,但由于某种原因,按钮根本不显示。标 checkout 现。这是我的代码:

package switching.scenes;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class SwitchingScenes extends Application {

private Scene scene1, scene2, scene3;
private Button button1, button2, button3;
private Label label1, label2, label3;
private VBox layout1, layout2, layout3;
private Stage frame;

@Override
public void start(Stage primaryStage) {

    frame = primaryStage;

    // Create buttons
    button1 = new Button("Go to scene 1");
    button2 = new Button("Go to scene 2");
    button3 = new Button("Go to scene 3");

    // Button action listener
    button1.setOnAction(e -> frame.setScene(scene1));
    button2.setOnAction(e -> frame.setScene(scene2));
    button3.setOnAction(e -> frame.setScene(scene3));

    // Create labels
    label1 = new Label("You are at scene 1");
    label2 = new Label("You are at scene 2");
    label3 = new Label("You are at scene 3");

    // Create layouts
    layout1 = new VBox(20);
    layout2 = new VBox(20);
    layout3 = new VBox(20);

    // Add elements to each layout
    layout1.getChildren().addAll(label1, button2, button3);
    layout2.getChildren().addAll(label2, button1, button3);
    layout3.getChildren().addAll(label3, button1, button2);

    // Create scenes
    scene1 = new Scene(layout1, 400,400);
    scene2 = new Scene(layout2, 400,400);
    scene3 = new Scene(layout3, 400,400);

    frame.setScene(scene1);
    frame.setTitle("Title");
    frame.show();
}

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

 }

最佳答案

为每个场景创建独特按钮节点。检查下面的代码

package switching.scenes;

import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class SwitchingScenes extends Application {

    private Scene scene1, scene2, scene3;
    private Button button2_1, button3_1,button1_2, button3_2,button1_3, button2_3;
    private Label label1, label2, label3;
    private VBox layout1, layout2, layout3;
    private Stage frame;

    @Override
    public void start(Stage primaryStage) {

        frame = primaryStage;

        // Create buttons
        button1_2 = new Button("Go to scene 1");button1_3 = new Button("Go to scene 1");
        button2_1 = new Button("Go to scene 2");button2_3 = new Button("Go to scene 2");
        button3_1 = new Button("Go to scene 3");button3_2 = new Button("Go to scene 3");

        // Button action listener
        button1_2.setOnAction(e -> frame.setScene(scene1));button1_3.setOnAction(e -> frame.setScene(scene1));
        button2_1.setOnAction(e -> frame.setScene(scene2));button2_3.setOnAction(e -> frame.setScene(scene2));
        button3_1.setOnAction(e -> frame.setScene(scene3));button3_2.setOnAction(e -> frame.setScene(scene3));

        // Create labels
        label1 = new Label("You are at scene 1");
        label2 = new Label("You are at scene 2");
        label3 = new Label("You are at scene 3");

        // Create layouts
        layout1 = new VBox(20);
        layout2 = new VBox(20);
        layout3 = new VBox(20);

        // Add elements to each layout
        layout1.getChildren().addAll(label1, button2_1, button3_1);
        layout2.getChildren().addAll(label2, button1_2, button3_2);
        layout3.getChildren().addAll(label3, button1_3, button2_3);

        // Create scenes
        scene1 = new Scene(layout1, 400,400);
        scene2 = new Scene(layout2, 400,400);
    scene3 = new Scene(layout3, 400,400);

        frame.setScene(scene1);
        frame.setTitle("Title");
        frame.show();
    }

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

}

我使用下划线“_”来表示场景编号。希望对您有所帮助。

关于java - 为什么按钮没有显示在框架中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346811/

相关文章:

java - Intellij IDEA 工具栏可用性

java - 获取 XML 包中返回的 SQLException 消息?

java - 如何使我的二维数组在java中水平和垂直显示?

java - 链接没有显着返回值的 Observable

java - 在 JavaFX 中的 TableColumn 的单独线程中生成值

JavaFX+MVC。如何隐藏/显示多个窗口?

java - NetBeans Swing GUI 生成器 : Background Gradient

JavaFX GUI 不释放内存

Javafx TreeView 目录列表

java - 为什么我的背景图像没有显示在 FXML 中