2016-06-07 87 views
0

我是javaFX的新手,我正在嘗試編程圖形計算器。 現在我想知道是否有方法通過按setOnAction按鈕來更改值?如何通過按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); 

} 

回答

1

value是一個局部變量(在方法中聲明)。局部變量不能在lambda表達式或匿名類中重新分配一個新值。 (它們必須是最終的,或者是最終的。)基本思想是lambda表達式e -> value+=1將在稍後的日期(按下按鈕時)執行,此時變量超出範圍(封閉方法將完成)。雖然語言作者可以完成這項工作的方式有些變化,但是改變不再出現在範圍內的變量的值是有些反直覺的,因此這是不允許的。

最簡單的解決方法就是使變量成爲實例變量。以下編譯:

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); 

    } 
} 
相關問題