【问题标题】:void is an invalid type for the variable paintvoid 是变量paint 的无效类型
【发布时间】:2014-06-30 12:29:00
【问题描述】:

void 是变量paint 的无效类型是我的程序在单击复选框时遇到的错误,文本字段在文本字段中显示复选框名称谢谢! 使用 if 语句*........

package irt;

import java.applet.Applet;
import java.awt.Checkbox;
import java.awt.Graphics;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class chkBx extends Applet implements ItemListener
{
    TextField t1;
    Checkbox c1,c2,c3;
    Label l1;
    public void init()
    {
        l1=new Label("data");
        add(l1);
        t1=new TextField(15);
        add(t1);
        c1=new Checkbox("nashik");
        add(c1);
        c2=new Checkbox("pune");
        add(c2);
        c3=new Checkbox("mumbai");
        add(c3);
        c1.addItemListener(this);
        c2.addItemListener(this);
        c3.addItemListener(this);
    }

    public void itemStateChanged(ItemEvent e) 
    {
        String msg="state";

                    public void paint(Graphics g)

                        {

                            t1.setText(msg);    
                            g.drawString(msg,50,100);
                            msg="city"+c1.getState();
                        }


    }
}

【问题讨论】:

  • 只需将最后一个} 之一移动到msg = "state"; 之后但在public void paint(... 之前。你把那里的支撑弄乱了。顺便说一句:没有“if-loop”之类的东西......

标签: java applet


【解决方案1】:

方法public void paint(Graphics g) 不是方法itemStateChanged 的一部分。

你必须改变你的代码:

public class chkBx extends Applet implements ItemListener
{
  String msg = new String();

  TextField t1;
  Checkbox c1, c2, c3;
  Label l1;

  public void init() {
    l1 = new Label("data");
    add(l1);
    t1 = new TextField(15);
    add(t1);
    c1 = new Checkbox("nashik");
    add(c1);
    c2 = new Checkbox("pune");
    add(c2);
    c3 = new Checkbox("mumbai");
    add(c3);
    c1.addItemListener(this);
    c2.addItemListener(this);
    c3.addItemListener(this);
  }

  public void itemStateChanged(ItemEvent e) {
    String msg = "state";
    this.repaint();
  }

  public void paint(Graphics g)

  {

    t1.setText(msg);
    g.drawString(msg, 50, 100);
    msg = "city" + c1.getState();
  }
}

【讨论】:

  • 哇,太好了,谢谢!
  • 我不确定我是否理解正确。但是您只能将 ItemListener 添加到第一个复选框。
  • 我的意思是如果第一个复选框被选中然后执行这个....如果第二个复选框被选中然后执行这个......就像我的意思是在Java中可能吗?
  • @theUndisputedHacker 是的if (e.getSource().equals(c1)&& c1.getState()== true) e.getSource() 为您提供被点击的元素,getState() 为您提供选中或未选中的信息。
【解决方案2】:

在 Java 中,您不能在方法中定义方法。

您需要在方法itemStateChanged之外定义方法paint

public void paint(Graphics g, String msg) {
    t1.setText(msg);    
    g.drawString(msg, 50, 100);
}

【讨论】:

    猜你喜欢
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多