actionPerformed方法中的错误

时间:2018-08-18 06:10:28

标签: java

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

public class Main implements ActionListener {

    public static void main(String[] args) {

        JFrame f = new JFrame();
        JPanel p = new JPanel();
        Label l = new Label("Sam");
        Button b = new Button("Click me");
        Label l2 = new Label();

        l.setBounds(3,5,4000,5000);
        l.setForeground(Color.BLUE);

        b.setLocation(5,5);
        b.setSize(1,1);


        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(500,600);
        f.setResizable(false);

        p.add(l);
        p.add(b);
        p.setBackground(Color.red);


        f.add(p);

        b.addActionListener(this);

        public void actionPerformed(ActionEvent e){
            String str = e.getActionCommand();

            if(str.equals("Click me"))
                System.out.println("GM");

        }
    }
}

这就是为什么Intellij在actionPerformed方法中显示错误。

它们在ActionEvent e的声明中显示错误。

错误:

Error

请帮助我,我是初学者。

这也是正确的:b.addActionListener(this); ?

3 个答案:

答案 0 :(得分:1)

actionPerformed()方法移出main()方法。

答案 1 :(得分:0)

    ....
    b.addActionListener(this);

    public void actionPerformed(ActionEvent e){
        String str = e.getActionCommand();

        if(str.equals("Click me"))
            System.out.println("GM");

    }
}

应该是

    ....
    b.addActionListener(new Main());

}
public void actionPerformed(ActionEvent e){
    String str = e.getActionCommand();
    if(str.equals("Click me"))
        System.out.println("GM");
}

您已经在另一个方法中定义了一个方法,这在Java中是非法的。

根据您的代码,new Main()很好。但是,这不是最佳方法。更好的实现如下:

public class Main {

    public static void main(String[] args) {

        JFrame f = new JFrame();
        JPanel p = new JPanel();
        Label l = new Label("Sam");
        Button b = new Button("Click me");
        Label l2 = new Label();

        l.setBounds(3,5,4000,5000);
        l.setForeground(Color.BLUE);

        b.setLocation(5,5);
        b.setSize(1,1);


        f.setVisible(true);
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(500,600);
        f.setResizable(false);

        p.add(l);
        p.add(b);
        p.setBackground(Color.red);


        f.add(p);

        b.addActionListener(new ActionListener{
            @Override 
            public void actionPerformed(ActionEvent e){
                String str = e.getActionCommand();

                if(str.equals("Click me"))
                System.out.println("GM");

             }
        });
    }
}

答案 2 :(得分:0)

  • 您应该使用构造函数
  • 您的主体应包含对象

公共类主要实现ActionListener {

main(){
    JFrame f = new JFrame();
    JPanel p = new JPanel();
    Label l = new Label("Sam");
    Button b = new Button("Click me");
    Label l2 = new Label();

    l.setBounds(3,5,4000,5000);
    l.setForeground(Color.BLUE);

    b.setLocation(5,5);
    b.setSize(1,1);



    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    f.setSize(500,600);
    f.setResizable(false);

    p.add(l);
    p.add(b);
    p.setBackground(Color.red);


    f.add(p);
    f.setVisible(true);
    b.addActionListener(this);
}



public void actionPerformed(ActionEvent e) {
    String str = e.getActionCommand();

    if(str.equals("Click me"))
        System.out.println("GM");

}

public static void main(String [] args){      main obj = new main();

}

}