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