You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:55:21