使用JAVAFX,当我点击一个按钮时,如何使标签显示数字递增

时间:2016-03-05 23:57:37

标签: java button javafx labels

FeathersPerSec fps = new FeathersPerSec();
public void start(Stage primaryStage)
{
    double getFeathers = fps.getNumOfFeathers();
    //double setFeathers = fps.setNumOfFeathers(1);
    double click = 1;


    GridPane pane = new GridPane();
    Image image = new Image("dancingChicken.gif");
    Button chickenClick = new Button();

    Label  feathers  = new Label("FPS " + click);
    chickenClick.setGraphic(new ImageView(image));

    chickenClick.setOnAction((e) -> {

         click++;
          feathers  = new Label("FPS" + click);
    });

这是我的程序的一部分,我试图制作一个cookie clicker类型的游戏。除了鸡和羽毛。我试图这样做,当用户点击图像按钮时,羽毛的数量将增加1。我不知道我应该把什么放在setOnAction中。在我目前的设置中,我不断得到一个“在一个封闭范围内定义的局部变量羽毛必须是最终的或有效的最终。”

1 个答案:

答案 0 :(得分:0)

您需要更新当前标签的文字,而不是创建新标签(不属于您的场景图)。

此外,您无法更改lambda表达式中的局部变量(在lambda表达式中访问的局部变量必须是final或有效最终(意味着它们只能被赋值一次)) 。最简单的解决方法是将click移动到实例变量:

private FeathersPerSec fps = new FeathersPerSec();
private double click ;

public void start(Stage primaryStage)
{
    double getFeathers = fps.getNumOfFeathers();
    //double setFeathers = fps.setNumOfFeathers(1);
    click = 1;


    GridPane pane = new GridPane();
    Image image = new Image("dancingChicken.gif");
    Button chickenClick = new Button();

    Label  feathers  = new Label("FPS " + click);
    chickenClick.setGraphic(new ImageView(image));

    chickenClick.setOnAction((e) -> {

         click++;
         feathers.setText("FPS" + click);
    });

}