繁体   English   中英

如何通过使用setOnAction按下按钮来更改值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM