在applet中按下按钮时,为什么错误地按下了变量的值?

时间:2014-01-21 11:17:48

标签: java button applet

我有一个代码,其中有一个变量v,其默认值为0。我还有2个按钮:oknope。使用我的代码,当按下ok时,v的值应为1,当按下nope时,v的值应为2.但在这两种情况下它打印v的值为2.这是为什么?我该如何纠正?

编辑:我犯了一个小错误,我已经纠正了,多亏了MadProgrammer。

import java.awt.*;
public class chk extends java.applet.Applet
{
    Button ok = new Button("OK!");
    Button nope = new Button("Nope");
    int v = 0;
    public void init()
    {
        setBackground(Color.white);
        add(ok);
        add(nope);
    }

    public boolean action(Event evt , Object arg)
    {
        if(evt.target instanceof Button)
        {
            check((Button)evt.target);
            return true;
        }
        return false;
    }
    public void check(Button b)
    {
        if(b == ok);
        {
            v= 1;
            repaint();
        }
        if(b == nope);
        {
            v=2;
            repaint();
        }
   }
   public void paint(Graphics g)
   {
        g.drawString(""+v,40,40);
   }
   }

感谢所有帮助。如果我犯了任何错误,请告诉我。

3 个答案:

答案 0 :(得分:6)

查看您的if声明

    if(b == nope);

您在每个声明的末尾添加了;。这意味着无论{...}语句可能需要什么,if括号内的两个代码块都将被执行。从每个语句的末尾删除;

Ps-除非你非常特别需要使用原始AWT,否则我考虑看一下Swing,或者你是否真的喜欢冒险,JavaFX,因为它们是更现代的GUI API

答案 1 :(得分:0)

请勿使用弃用的方法,而是使用ActionListener代替:

ok.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent arg0) {
                v = 1;
                repaint();
            }
});
nope.addActionListener(new ActionListener() {               
            @Override
            public void actionPerformed(ActionEvent arg0) {
                v = 2;
                repaint();
            }
});

答案 2 :(得分:0)

== COmparison被认为是不错的尝试类似这样的事情并且正如MadProgrammer所说尝试在if和else之后删除;

if(b.getLabel().equals("OK!"))
     {
       v=1;
       repaint();
      }
if(b.getLabel().equals("Nope"))
      {
        v=2;
        repaint();
      }