我的代码中出现错误,但我不确定错误意味着什么,我已经尝试过研究错误,但似乎没有任何与我的代码相关的内容,是否有人可以帮助我?
我的代码;
import java.io.*;
import java.lang.*;
import java.util.*;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class Assignment4Test {
public static void main(String[] args) throws IOException {
Scanner console = new Scanner(System.in);
BufferedReader in = new BufferedReader(new FileReader("shop-account"));
final int Username = 3387;
final int Password = 5183;
final int AccountNumber = 22334455;
int EnteredUsername;
int EnteredPassword;
int EnteredAccountNumber;
for (int s = 0; s <= 3; s++) {
if (s < 3) {
System.out.println("Enter Username");
EnteredUsername = console.nextInt();
System.out.println("Username Entered is " + EnteredUsername);
System.out.println("Enter Password");
EnteredPassword = console.nextInt();
System.out.println("Password Entered is " + EnteredPassword);
System.out.println("Enter Account Number");
EnteredAccountNumber = console.nextInt();
System.out.println("Account Number Entered is " + EnteredAccountNumber);
if (Username == EnteredUsername && (Password == EnteredPassword)
&& (AccountNumber == EnteredAccountNumber)) {
System.out.println("Welcome");
System.out.println("Account username, password, account number and current balance and shown below;");
String line;
while((line = in.readLine()) != null)
{
System.out.println(line);
}
new MyFrame().displayGui();
break;
} else {
System.out.println("Wrong Username, Password or Account Number. Please try again.");
}
} else {
System.out.println("3 incorrect enteries detected. Program is terminating, goodbye!");
}
}
}
static class MyFrame extends JFrame {
JMenuBar menubar;
JMenu TransferAnAmount;
JMenuItem TransferAnAmountToAnotherAccount;
JMenu ListRecentTransactions;
JMenuItem ShowList;
JMenu DisplayCurrentBalance;
JMenuItem ShowBalance;
JMenu ExitProgram;
JMenuItem Exit;
public MyFrame() {
setLayout(new FlowLayout());
menubar = new JMenuBar();
setJMenuBar(menubar);
TransferAnAmount = new JMenu("Transfer An Amount");
menubar.add(TransferAnAmount);
ListRecentTransactions = new JMenu("List Recent Transactions");
menubar.add(ListRecentTransactions);
DisplayCurrentBalance = new JMenu("Display Current Balance");
menubar.add(DisplayCurrentBalance);
ExitProgram = new JMenu("Exit Program");
menubar.add(ExitProgram);
TransferAnAmountToAnotherAccount = new JMenuItem("Transer an amount to another account");
TransferAnAmount.add(TransferAnAmountToAnotherAccount);
ShowList = new JMenuItem("Show List");
ListRecentTransactions.add(ShowList);
ShowBalance = new JMenuItem("Show Balance");
DisplayCurrentBalance.add(ShowBalance);
event s = new event();
ShowBalance.addActionListener(s);
Exit = new JMenuItem("Exit Program");
ExitProgram.add(Exit);
event e = new event();
Exit.addActionListener(e);
}
class event implements ActionListener {
public void actionPerformed3(ActionEvent s) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("shop-account"));
String line;
while((line = in.readLine()) != null)
{
System.out.println(line);
}
}
public void actionPerformed4(ActionEvent e) {
System.exit(0);
}
}
public void displayGui() {
MyFrame gui = new MyFrame();
gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
gui.setSize(600, 300);
gui.setVisible(true);
}
}
}
我的代码中的这一行给出了错误;
}
class event implements ActionListener { // <<< This line
public void actionPerformed3(ActionEvent s) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("shop-account"));
String line;
while((line = in.readLine()) != null)
{
System.out.println(line);
}
}
public void actionPerformed4(ActionEvent e) {
System.exit(0);
}
}
给出的错误是;
Exception in thread "AWT-EventQueue-0" java.lang.Error: Unresolved compilation problem:
The type Assignment4Test.MyFrame.event must implement the inherited abstract method ActionListener.actionPerformed(ActionEvent)
我不确定错误是什么或如何解决。
感谢任何帮助,谢谢。
答案 0 :(得分:1)
ActionListener
接口包含方法actionPerformed
,因此在实现该接口时,必须覆盖actionPerformed
方法。该方法的正确定义是:
public void actionPerformed(ActionEvent e)
不确定这只是一个拼写错误,但您有两种actionPerformed3
和actionPerformed4
方法实际上并没有覆盖ActionListener
类actionPerformed
方法。
为避免此类问题,在您尝试覆盖的方法之上使用@Override
注释总是有帮助的。所以这更好更安全:
@Override
public void actionPerformed(ActionEvent e) {
// method body
}
答案 1 :(得分:0)
ActionListener是一个界面。
因此,在实施此界面时,您需要override
actionPerformed(ActionEvent e)
方法:
class MyListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// do something
// maybe call actionPerformed3(e)?
}
}
答案 2 :(得分:0)
您需要在事件类定义
中实现public void actionPerformed(ActionEvent e)
class event implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
// you need to implement this
}
public void actionPerformed3(ActionEvent s) throws IOException {
BufferedReader in = new BufferedReader(new FileReader("shop-account"));
String line;
while((line = in.readLine()) != null)
{
System.out.println(line);
}
}
public void actionPerformed4(ActionEvent e) {
System.exit(0);
}
}
答案 3 :(得分:0)
因为您正在实现一个接口,所以需要覆盖其中的所有方法。
@override
public void actionPerformed(ActionEvent e)
{
//some code.
}
添加此代码并尝试。
规则 - :如果您的类不是抽象的,则必须覆盖您正在实现的接口中定义的所有方法。