Java AWT问题:actionPerformed方法中无法修改变量值
问题解决:Applet按钮无法修改stat变量的原因及修复方案
你的代码里有两个关键问题导致stat值始终不变:
1. ActionCommand判断不匹配
你给加号按钮设置的ActionCommand是"+",减号按钮是"-",但在actionPerformed方法里,你判断的却是"plus"和"minus",两个分支永远不会触发,stat自然不会被修改。
2. 缺少数值显示与重绘逻辑
就算修正了判断,你也看不到stat的变化,因为没有把数值绘制到Applet界面上,也没有在修改后触发重绘。
修正后的完整代码
import java.awt.*; import java.applet.*; import java.awt.event.*; public class test extends Applet implements ActionListener { int stat = 0; Button plus, minus; public void init() { plus = new Button("+"); plus.setActionCommand("+"); minus = new Button("-"); minus.setActionCommand("-"); minus.addActionListener(this); plus.addActionListener(this); add(plus); add(minus); } public void actionPerformed(ActionEvent ae) { String str = ae.getActionCommand(); if (str.equals("-")) { stat -= 1; repaint(); // 修改后触发重绘 } else if (str.equals("+")) { stat += 1; repaint(); // 修改后触发重绘 } } // 重写paint方法,显示当前stat的值 public void paint(Graphics g) { super.paint(g); g.drawString("当前数值: " + stat, 20, 50); } }
关键修改说明
- 把
actionPerformed里的判断条件改成和按钮设置的ActionCommand一致,即判断"+"和"-"。 - 添加
paint方法,使用Graphics对象绘制当前stat的数值。 - 每次修改stat后调用
repaint(),通知Applet重新绘制界面,让数值变化即时显示出来。
内容的提问来源于stack exchange,提问作者peacemaker
相关产品推荐
相关产品推荐

