Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java中的方法递增类变量_Java - Fatal编程技术网

从Java中的方法递增类变量

从Java中的方法递增类变量,java,Java,我正在从事一个Java项目,我被困在这个简单的类中。 基本上,我尝试从另一个类调用“add”方法,然后使用递增的“WaterAmount”整数作为JProgressBar值。现在我的问题是: 每次调用“add”方法时,“WaterAmount”整数都保持为0,进度条的值为0。 但是,如果我手动设置“WaterAmount”,它会工作。 那么我在这里遗漏了什么,为什么“add”方法不增加“WaterAmount”整数 这是我的密码: public class Water { int WaterA

我正在从事一个Java项目,我被困在这个简单的类中。 基本上,我尝试从另一个类调用“add”方法,然后使用递增的“WaterAmount”整数作为JProgressBar值。现在我的问题是:

每次调用“add”方法时,“WaterAmount”整数都保持为0,进度条的值为0。 但是,如果我手动设置“WaterAmount”,它会工作。 那么我在这里遗漏了什么,为什么“add”方法不增加“WaterAmount”整数

这是我的密码:

public class Water {

int WaterAmount;

public void add(int amountA) {

WaterAmount = WaterAmount + amountA;


}

 public void remove(int amountR) {

 WaterAmount = WaterAmount - amountR;

}

}
要调用我使用的“add”方法,请执行以下操作:

Water water = new Water();
water.add(10);
要读取我使用的其他类别中的“WaterAmount”值:

    public void updateDisplay() {

    waterAmount.setValue(water.WaterAmount);
    }

   public static void main(String[] args) {

    Main system = new Main();

   system.updateDisplay();
    }

“waterAmount”是小写的,它是我的进度条的名称

使用“this”。。试试这个。w=这个。w+数量

运行这个简单的测试,了解java中引用变量的工作方式

public class Water {

    int WaterAmount;

    public int getWaterAmount() {
        return WaterAmount;
    }

    public void setWaterAmount(int waterAmount) {
        WaterAmount = waterAmount;
    }

    public void add(int amountA) {
        WaterAmount = WaterAmount + amountA;
    }

    public void remove(int amountR) {
        WaterAmount = WaterAmount - amountR;
    }
}
创建一个测试类

public class Test {
    public static void main(String[] args) {
        Water wat = new Water();
        wat.add(10);
        System.out.println( wat.getWaterAmount());
    }
}
输出
10

您的问题不在于Water类,而在于您将Water.WaterAmount与ProgressBar关联的方式。您假设ProgressBar正在监视WaterAmount值的变化(例如ProgressBar值绑定到WaterAmount值),但事实并非如此。每次调用add()时,WaterAmount的值肯定会增加,但progressBar的值不会改变


很简单,每次waterAmount的值更改时,都需要调用progressBar.setValue()。如何最好地做到这一点取决于您没有向我们展示的信息(什么叫water.add(10)以及您使用的线程(如果有的话)

问题解决后,我忘记将“system.updateDisplay()”放在一个循环中。
谢谢您的帮助。

您是否为每次调用
Water.add()
创建新的
Water
对象?否,我只使用一个object@BlockCoder您可以添加如何读取
水量
值吗?你展示的代码工作得很好。可能是因为我的进度条与“WaterAmount”的名称相同,但只有小写???@BlockCoder不,这是不可能的。你确定在调用
.add()
/
remove()
之后调用
waterAmount.setValue(water.waterAmount)
吗?water.add()方法是从“actionPerformed”方法(每次按下按钮)调用的。在主方法中调用progressBar.setValue(),我甚至尝试放置progressBar.setValue()在一个while循环中,但它不起作用,这就是您应该将imp放在代码中的原因!