Класс не является абстрактным и не переопределяет абстрактный метод actionPerformed (ActionEvent) - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь подключить Oracle Oracle к Java и хочу выполнить несколько запросов, но я получаю сообщение об ошибке

error: Conn is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener
class Conn extends JFrame implements ActionListener 

Вот мой код

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

class Conn extends JFrame implements ActionListener 
{
        JFrame frame = new JFrame("login page");
        JLabel fname,lname,pn;
        JTextField fname1,lname1,pn1;
        JButton sbmt,updt,dlt,slct;

        static Connection conn;

    Conn()
    {
        fname = new JLabel("First name");
        fname.setBounds(5,50,100,20);

        fname1 = new JTextField(10);
        fname1.setBounds(100,50,100,20);

        lname = new JLabel("Last Name");
        lname.setBounds(5, 100, 100,20);

        lname1 = new JTextField(10);
        lname.setBounds(100,100,100,20);

        pn = new JLabel("Phone No.");
       pn.setBounds(50, 50, 50, 50);

        pn1 =  new JTextField(10);
        pn1.setBounds(50,50,50,50);

        sbmt = new JButton("Insert");
        sbmt.setBounds(50,50,50,50);


        add(fname);
        add(fname1);

        add(lname);
        add(lname1);

        add(pn);
        add(pn1);

        add(sbmt);

        sbmt.addActionListener(this);

    }

  public void actionListener(ActionEvent e)
  {
      if (e.getSource()==sbmt)
      {
          System.out.println("sbmt button clicked");
      }
  }

    public static void main(String[] args) {

        try
        {
            Class.forName("oracle.jdbc.OracleDriver");
            conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","username","password");
             conn.close();
        }
        catch(ClassNotFoundException | SQLException e)
                {
                    System.out.println(e);

                }


        Conn con = new Conn();

        con.setSize(400,400);
        con.setLayout(null);
        con.setVisible(true);
    }    
}

вывод:

/home/jayu/NetBeansProjects/projects/conn/src/conn/Conn.java:5: error: Conn is not abstract and does not override abstract method actionPerformed(ActionEvent) in ActionListener
class Conn extends JFrame implements ActionListener 

Компилятор: NetBeans

Как я могу решить эту ошибку, я не хочу удалять implements ActionListener. Пожалуйста, кто-нибудь исправит эту ошибку, не удаляя `реализует ActionListener.

Ответы [ 4 ]

0 голосов
/ 26 сентября 2018

Вы должны реализовать метод, если хотите сохранить интерфейс ActionListener.Просто переключите имя actionListener () на actionPerformed ().В противном случае вы также можете оставить actionListener () и реализовать actionPerformed (), чтобы он ничего не делал

@Override
public void actionPerformed(ActionEvent e) {}
0 голосов
/ 26 сентября 2018

Поскольку ваш класс реализует интерфейс

public interface ActionListener extends EventListener {
    void actionPerformed(ActionEvent var1);
}

Вам необходимо реализовать его метод:

@Override
public void actionPerformed(ActionEvent actionEvent) {...}

Я предполагаю, что этот метод имеет неправильное имя:

public void actionListener(ActionEvent e){...}

Так что переименуйте его в actionPerformed, и он должен работать.

0 голосов
/ 26 сентября 2018

Удалите реализацию ActionListener из вашего класса:

class Conn extends JFrame

Удалите ваш метод actionListener и добавьте его вместо sbmt.addActionListener (this);

 sbmt.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
             if (e.getSource()==sbmt)
              {
                  System.out.println("sbmt button clicked");
              }

        }
    });

РЕДАКТИРОВАТЬ:

Я пропустил, вы не хотите удалять реализацию ActionListener, так как кто-то еще уже сказал, что вы должныизмените свой метод:

public void actionListener(ActionEvent e)

{

на:

@Override
public void actionPerformed(ActionEvent e){
}
0 голосов
/ 26 сентября 2018

На самом деле, сообщение об ошибке говорит само за себя.В вашем случае вы добавили метод:

public void actionListener(ActionEvent e)

, но на самом деле это должно быть:

public void actionPerformed(ActionEvent e)

, поскольку это фактический метод в интерфейсе, который вы реализуете.

...