gpt4 book ai didi

java - 为什么我的按钮在 Javafx 中表现得很奇怪

转载 作者:行者123 更新时间:2023-12-01 09:35:56 25 4
gpt4 key购买 nike

当我按button1时我的场景没有改变,它说 button2被压了。这是为什么?

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class Main extends Application {

Stage window;
Button button, button2;
Scene scene, scene2;

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

@Override
public void start(Stage primaryStage) throws Exception {
window = primaryStage;
window.setTitle("title");

// label 1
Label label1 = new Label("This is scene 1");

// button 1
button = new Button("Go to scene 2");
button.setOnAction(e -> {
window.setScene(scene2);
System.out.println("button 1 pressed");
});

// layout 1
StackPane layout = new StackPane();
layout.getChildren().addAll(label1, button);
scene = new Scene(layout, 200, 500);

// label 2
Label label2 = new Label("This is scene 2");

// button 2
button2 = new Button("go to scene 1");
button.setOnAction(e -> {
window.setScene(scene);
System.out.println("button 2 pressed");
});

// layout 2
StackPane layout2 = new StackPane();
layout2.getChildren().addAll(label2, button2);
scene2 = new Scene(layout2, 200, 500);

window.setScene(scene);
window.show();

}
}

最佳答案

当您定义按钮 2 时,您的“setOnAction”适用于按钮(而不是按钮2)。因此,为了使其正常工作,请将button2的button.setOnAction更改为button2.setOnAction。然后就可以工作了。

一些将来可能对您有所帮助的提示:如果您调试程序而不是运行并在 window.setScene(scene2); 设置断点;另一个是 window.setScene(scene);那么你会发现,当你按下按钮时,执行会停止在 window.setScene(scene);

换句话说,当按下button1 时,调用了错误的操作处理程序。这就是你的答案。

此外,如果您尝试测试这样的两个场景,请使一个场景与另一个场景不同,例如场景1 = 新场景(布局, 200, 500);和 scene2 = new Scene(布局, 500, 200);这样您就可以更清楚地看出您正在看哪一个。

关于java - 为什么我的按钮在 Javafx 中表现得很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38931197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com