gpt4 book ai didi

java - 如何通过按下带有 setOnAction 的按钮来更改值?

转载 作者:行者123 更新时间:2023-12-01 09:49:36 24 4
gpt4 key购买 nike

我是 javaFX 新手,我正在尝试编写图形计算器。现在我想知道是否有办法通过按下 setOnAction 按钮来更改值?

public class exampleFX extends Application{

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

int value=0;
Button button = new Button();

// just as an example i do know i can't change a variable in a lambda expression
button.setOnAction( e -> value +=1);

}

最佳答案

value 是一个局部变量(在方法内声明)。无法在 lambda 表达式或匿名类中为局部变量重新分配新值。 (它们必须是最终的,或者实际上是最终的。)基本思想是 lambda 表达式 e -> value+=1 将在稍后的日期(按下按钮时)执行,到那时变量就会超出范围(封闭的 start() 方法将完成)。虽然语言作者可以通过多种方式实现此目的,但更改不再出现在作用域中的变量的值有些违反直觉,因此是不允许的。

因此,最简单的解决方法是使该变量成为实例变量。编译如下:

public class ExampleFX extends Application{

private int value = 0 ;

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

public void start(Stage primaryStage) {

Button button = new Button();

button.setOnAction( e -> value +=1);

}
}

关于java - 如何通过按下带有 setOnAction 的按钮来更改值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37688100/

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