Java ActionListener不是';t执行

Java ActionListener不是';t执行,java,jframe,actionlistener,Java,Jframe,Actionlistener,JFrameWithPanel不是抽象的,并且不重写java.awt.event.ActionListener中的抽象方法actionPerformed(java.awt.event.ActionEvent) 公共类JFrameWithPanel扩展JFrame实现ActionListener 我不明白这个密码。Book and Java站点告诉我这是该方法的语法,但这个错误仍然经常出现 import javax.swing.*; import javax.swing.JOptionPane;

JFrameWithPanel不是抽象的,并且不重写java.awt.event.ActionListener中的抽象方法actionPerformed(java.awt.event.ActionEvent) 公共类JFrameWithPanel扩展JFrame实现ActionListener

我不明白这个密码。Book and Java站点告诉我这是该方法的语法,但这个错误仍然经常出现

import javax.swing.*;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
import java.lang.Math.*;
import java.lang.Integer.*;
import java.util.*;
import java.util.Random;
import java.io.*;
import java.text.*;
import java.text.DecimalFormat.*;

public class JFrameWithPanel extends JFrame implements ActionListener
{
 JButton button = new JButton("Exit");

 public JFrameWithPanel()
 {
  super("JFrame with Panel");

  JComboBox packageChoice = new JComboBox();
  packageChoice.addItem("A+ Certification");
  packageChoice.addItem("Network+ Certification ");
  packageChoice.addItem("Security+ Certifictation");
  packageChoice.addItem("CIT Full Test Package");

  packageChoice.addActionListener(this);

  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  JPanel pane = new JPanel();
  pane.add(button);
  pane.add(packageChoice);
  setContentPane(pane);
  setSize(200,100);
  setVisible(true);

 }
}
后来

public class CreateJFrameWithPanel
{
 public static void main(String[] args)
 {
  JFrameWithPanel panel = new JFrameWithPanel();
 }
}
该类实现该接口。这意味着它必须实现一种方法:

public void actionPerformed(ActionEvent)
但是,您发布的类定义不包含此方法,因此您会看到编译错误。要修复代码,请尝试添加以下方法:

public void actionPerformed(ActionEvent evt) {
  Object obj = packageChoice.getSelectedItem();
  JOptionPane.showMessageDialog(this, "You selected: " + obj);
}

实现ActionListener
意味着您的类必须定义在
ActionListener
接口中定义的方法。它有一种方法:

void actionPerformed(java.awt.event.ActionEvent);
所以你必须有这个方法。你需要它,因为你的按钮需要一个动作监听器


在该方法中,您可以定义单击按钮时发生的情况。

请注意,不必要地扩展类,例如
JFrame
,是一个坏主意。正如实现随机接口一样(使用匿名内部类)。Swing(和AWT)应该从AWT“EDT”线程使用,因此需要
main
中的样板文件。您可能需要另一本书。它应该是“getSelectedItem()”(未更正)。你应该尝试提供更多关于错误的信息;否则,就很难/不可能诊断问题。此外,对于这种类型的编译错误,您应该做的第一件事是检查JDK API,以查看类(JComboBox)上是否存在该方法。希望有帮助。回答得好。这里有几个额外的提示:如果您正在使用Eclipse,您将在左侧看到一个错误“X”。如果您单击它,那么它可以通过为您尝试覆盖的方法添加框架来为您纠正问题;另外,如果您使用的是Extends而不是Implements,请确保在方法前面使用@override@如果方法签名不正确,override将向您发出警告(对于实现来说,这并不是真正必要的,因为您将已经得到您得到的错误,但是对于extends,您不会得到任何错误,您的侦听器将永远不会触发)