[英]How can i change a Value by pressing on a button with setOnAction?
我是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);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.