回 帖 发 新 帖 刷新版面

主题:急急急急 下面代码有什么错误

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class test extends JFrame implements ActionListener{
    public test(){
        JButton jbtok=new JButton("ok");
        getContentPane().add(jbtok);
    }
    public void actionPerform(ActionEvent e){
        if(e.getSource()==jbtok)
            System.out.println("ok button is clicked");
    }
}

回复列表 (共6个回复)

沙发

没有添加监视器阿

板凳

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class test extends JFrame implements ActionListener{
    public test(){
        JButton jbtok=new JButton("ok");
        getContentPane().add(jbtok);
        jbtok.addActionListener(this);
    }
    public static void main(String[]args){
        test f=new test();
        f.setTitle("Button");
        f.setSize(200,100);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setVisible(true);
    }
    public void actionPerform(ActionEvent e){
        if(e.getSource()==jbtok)
            System.out.println("ok button is clicked");
    }
}加了监视器  还是有错

3 楼

你是用什么IDE啊?还是没用,直接用JDK?

你添加监视器后的代码根本就连编译都通不过。编译的错误是最容易修正的,要学会根据错误信息找原因,经常看看JDK DOC。这错误不是明摆着的嘛?

test.java:4: test 不是抽象的,并且未覆盖 java.awt.event.ActionListener 中的抽象方法 actionPerformed(
java.awt.event.ActionEvent)
public class test extends JFrame implements ActionListener{
       ^
test.java:19: 找不到符号
符号: 变量 jbtok
位置: 类 test
        if(e.getSource()==jbtok)
                          ^
2 错误

第一个错误自然是方法名不对。
第二个错误自然是变量作用域不对。

4 楼

我还是没有明白  能不能说清楚点啊

5 楼

实现接口的时候需要覆盖接口中声明的抽象方法。ActionListener接口中声明的抽象方法是public void actionPerformed(ActionEvent e);你用public void actionPerform(ActionEvent e),自然不是覆盖掉这个方法,JVM认为你没有覆盖接口中的方法,所以就会报错啊。
而jbtok是在test方法里面定义的,在test方法外面不能看到这个定义,所以JVM认为这个jbtok是没有定义的。

6 楼

要在一个类中的多个方法中访问一个变量,要将其设置为属性。
同时按钮要添加监听才能触发事件。
窗体也要设置为显示。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class test extends JFrame implements ActionListener{
   private JButton jbtok=new JButton("ok");
    public test(){
        jbtok.addActionListener(this);
        getContentPane().add(jbtok);
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    public static void main(String[]args){
        new test();
    }
    public void actionPerformed(ActionEvent e){
        if(e.getSource()==jbtok)
            System.out.println("ok button is clicked");
    }
}

我来回复

您尚未登录,请登录后再回复。点此登录或注册