ActionListener中预期的标识符

时间:2014-05-18 00:15:41

标签: java swing jbutton actionlistener

我编译了我的代码并得到了错误:

C:\Users\RJ\Desktop>javac  windowTest.java
windowTest.java:17: error: <identifier> expected
        click.addActionListener(new ActionListener(){
                               ^
windowTest.java:22: error: ';' expected
          });
           ^
2 errors

我仍然是java的新手,并希望通过示例和/或一步一步的帮助解释。如果我移动覆盖我得到一个错误,说我没有覆盖。我的代码是:

import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.*;
import java.util.Scanner;


public class windowTest extends JFrame implements ActionListener{
public static void main(String args[]){
    JFrame frame = new JFrame();
    JLabel label = new JLabel("This is a test.");
        JButton click = new JButton("Test");
    JPanel buttonPan = new JPanel();
    JPanel textPan = new JPanel();
    final JTextField textIn = new JTextField();
    @Override
    click.addActionListener(new ActionListener(){      
    public void actionPerformed(ActionEvent e){
        String text = textIn.getText();
        System.out.println(text);
        }
      });
    buttonPan.setSize(100, 100);
    textIn.setPreferredSize(new Dimension(700, 48));
    textPan.add(textIn);
    buttonPan.add(click);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(800, 700);
    frame.setLocationRelativeTo(null);
    frame.setLayout(new BorderLayout());
        label.setHorizontalAlignment(JLabel.CENTER);
        label.setVerticalAlignment(JLabel.CENTER);
        frame.add(label, BorderLayout.NORTH);
    frame.add(buttonPan, BorderLayout.SOUTH);
    frame.add(textPan, BorderLayout.CENTER);
    frame.setVisible(true);
    frame.setTitle("Window Test");
       }
    }

1 个答案:

答案 0 :(得分:2)

第一个问题,你需要向下移动@Override,因为这是一个适用于匿名类内部方法定义的注释。

click.addActionListener(new ActionListener(){      
@Override
public void actionPerformed(ActionEvent e){
    String text = textIn.getText();
    System.out.println(text);
    }
  });

第二个问题,您的windowTest班级声称 implements ActionListener但未实施actionPerformed。由于您似乎不需要它,您可以在声明中删除它。

public class windowTest extends JFrame{
...
}

通过这两项更改,您的应用程序将编译并运行。