我正在尝试将oracle sql与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
。请任何人在不删除`implement ActionListener的情况下纠正此错误。
答案 0 :(得分:5)
实际上,错误消息说明了一切。 在您的情况下,您添加了方法:
public void actionListener(ActionEvent e)
但这实际上应该是:
public void actionPerformed(ActionEvent e)
因为这是您正在实现的接口中的实际方法。
答案 1 :(得分:2)
因为您的课程实现了接口
public interface ActionListener extends EventListener {
void actionPerformed(ActionEvent var1);
}
您需要实现该方法:
@Override
public void actionPerformed(ActionEvent actionEvent) {...}
我认为此方法的名称错误:
public void actionListener(ActionEvent e){...}
因此将其重命名为actionPerformed
,它应该可以工作。
答案 2 :(得分:1)
如果要保留接口ActionListener,则必须实现该方法。 只需将actionListener()的名称切换为actionPerformed()。否则,您还可以保留actionListener()并实现actionPerformed(),以便他什么都不做
@Override
public void actionPerformed(ActionEvent e) {}
答案 3 :(得分:0)
从您的类中删除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){
}