关于Java的事件监听,问题出在哪?

代码如下,提示"cannot be resolved to type"(已在注释中标出),但我认为没有问题啊

 package QAppLet;
import java.awt.*;
import java.awt.event.*;
import java.awt.Button;
public class Complete {
    public static void main(String[] args) {
        MyFrame m=new MyFrame("字符比较器");
    }

}
class MyFrame extends Frame{
    MyFrame(String s){
        super(s);
        setVisible(true);
        setLayout(new FlowLayout());
        TextField f1=new TextField(50);
        TextField f2=new TextField(50);
        TextField f3=new TextField(10);
        Label la1=new Label();
        Label la2=new Label();
        Label la3=new Label();
        la1.setText("y原始值");
        la2.setText("比较值");
        la3.setText("比较结果");
        Button b=new Button("确定");
        this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                setVisible(false);
                System.exit(0);
            }
        });
        add(la1);
        add(f1);
        add(la2);
        add(f2);
        add(la3);
        f3.setEditable(false);
        add(f3);
        add(b);
        b.addActionListener(new Act());   //提示“Act cannot be resolved to type"
        class Act implements ActionListener{
            public void actionPerformed(ActionEvent e){
                if((f1.getText()).equals(f2.getText()))
                    f3.setText("相等");
                else
                    f3.setText("不相等");
            }
        }

    }
}

3个回答

图片说明

试着把class Act这个类的定义写在class MyFrame这个类的外面,

YXTS122
YXTS122 回复dadi723: 你的程序我运行过了
接近 3 年之前 回复
dadi723
dadi723 回复YXTS122: 在外面不是不能访问f1 f3这些元素了啊,就是为了方便访问才做成内部类的,书上也这么写,应该没有问题啊
接近 3 年之前 回复
YXTS122
YXTS122 不要把class Act定义在class MyFrame里,要在外面
接近 3 年之前 回复
 import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Complete {
    public static void main(String[] args) {
        MyFrame m=new MyFrame("字符比较器");
    }

}
class MyFrame extends Frame{
    TextField f1;
    TextField f2;
    TextField f3;
    MyFrame(String s){
        super(s);
        setVisible(true);
        setLayout(new FlowLayout());
        f1=new TextField(50);
        f2=new TextField(50);
        f3=new TextField(10);
        Label la1=new Label();
        Label la2=new Label();
        Label la3=new Label();
        la1.setText("y原始值");
        la2.setText("比较值");
        la3.setText("比较结果");
        Button b=new Button("确定");
        this.addWindowListener(new WindowAdapter(){
            public void windowClosing(WindowEvent e){
                setVisible(false);
                System.exit(0);
            }
        });
        add(la1);
        add(f1);
        add(la2);
        add(f2);
        add(la3);
        f3.setEditable(false);
        add(f3);
        add(b);
        b.addActionListener(new Act());   //提示“Act cannot be resolved to type"

    }
    class Act implements ActionListener{
        public void actionPerformed(ActionEvent e){
            if((f1.getText()).equals(f2.getText()))
                f3.setText("相等");
            else
                f3.setText("不相等");
        }
    }
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!