ActionListener не реализует - PullRequest
1 голос
/ 15 июня 2010

JFrameWithPanel не является абстрактным и не заменяет абстрактный метод actionPerformed (java.awt.event.ActionEvent) в java.awt.event.ActionListener открытый класс JFrameWithPanel расширяет JFrame реализует ActionListener

Я не понимаю этот код. Сайт Book и 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();
 }
}

Ответы [ 2 ]

4 голосов
/ 15 июня 2010

Класс реализует интерфейс ActionListener.Это означает, что он должен реализовывать метод:

public void actionPerformed(ActionEvent)

Однако опубликованное вами определение класса не включает этот метод, поэтому вы видите ошибку компиляции.Чтобы исправить код, попробуйте добавить следующий метод:

public void actionPerformed(ActionEvent evt) {
  Object obj = packageChoice.getSelectedItem();
  JOptionPane.showMessageDialog(this, "You selected: " + obj);
}
1 голос
/ 15 июня 2010

implements ActionListener означает, что ваш класс должен определить методы, которые определены в интерфейсе ActionListener. У него один метод:

void actionPerformed(java.awt.event.ActionEvent);

Так что вы должны иметь этот метод. Вам это нужно, потому что вашей кнопке нужен слушатель действия.

В этом методе вы определяете, что происходит при нажатии кнопки.

...