当前位置: 首页 > 知识库问答 >
问题:

如何在 Mouse 事件类中使用方法的变量?

李经国
2023-03-14

我有一个像这样的javafx代码,

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

/**
 *
 * @author deb-l-ana
 */
public class NewFXMain extends Application {

    @Override
    public void start(Stage primaryStage) {
        Group root=new Group();
        Scene scene=new Scene(root,500,500,true);
        int ctr=0;
        Button b1=new Button("b1");
        b1.setTranslateX(90);
        root.getChildren().add(b1);
        b1.setOnAction(e -> {
            ctr=1;
        });
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}

这给了我一个编译错误

从lambda表达式引用的局部变量必须是最终的或有效的最终的

但是,如果我将ctr声明为最终版本,则无法对其进行修改。我可以做些什么来修改 lambda 表达式中的局部变量?但是如果我使用一个数组,ctr1[]={0}一个元素,然后我可以从lambda表达式中引用它,这工作正常。为什么会发生这种情况,如何从鼠标单击事件更新 ctr 的值?

共有1个答案

邹阳
2023-03-14

我无法比他更好地解释:https://stackoverflow.com/a/12750186/5677103“整数是不可变的[…],但您可以设计自己的类来嵌入整数,并使用它代替整数。”

public class MutableInteger {
    private int value;
    public MutableInteger(int value) {
        this.value = value;
    }
    public int getValue() {
        return value;
    }
    public void setValue(int value) {
        this.value = value;
    }
}

最终对象的实例不能修改,但其属性可以修改。此外,int是一个privative类型,Integer是包装该类型的对象。

 类似资料:
  • 我想知道是否可以将变量和(它们都位于类中的方法中)用于类中的方法,以便在类中输入的用户名和密码将与类中的输入匹配。

  • 我有一个名为User的抽象类和一个扩展User的子类。User类包含一个方法:受保护的抽象空setId(String newId){}:它在User类中设置一个私有变量id。所以我的问题是,当我去创建setId()方法时,如果User类中的id是私有的,我如何引用它?据我所知,id变量不能被设置为受保护的。感谢任何能帮忙的人!

  • 我的问题: 我有一个https请求,它返回一个json文件。例如:

  • 我正试图做一个课堂作业,但我遇到了一个问题,我找不到解决方案。我的主方法中有一个变量,名为passwd。我让一个用户输入一个可能密码,输入被存储在变量中。然后检查password变量的长度,以确保它符合长度要求。然后我想让另一个方法chat检查变量的每个字符,看看它是否是一个数字。

  • 问题内容: 如果我有以下python代码: 它抱怨 如何在方法中访问类/静态变量? 问题答案: 代替使用或。分配给将创建一个静态变量,分配给将创建一个实例变量。

  • 问题内容: 如果我有以下python代码: 它抱怨 如何bar在方法中访问类/静态变量? 问题答案: 代替bar使用或。分配给将创建一个静态变量,分配给将创建一个实例变量。