gpt4 book ai didi

java - 如何修复 Java 错误 : myClass is not abstract and does not override abstract method?

转载 作者:行者123 更新时间:2023-12-02 00:57:26 26 4
gpt4 key购买 nike

我对 Java 非常陌生,而且我是一个痴迷于 GUI 的怪胎,因此被 Swing 所吸引。我对 Java 没有太多经验(真正的基础知识),但我已经开始制作游戏了。我想使用 Swing,并在网站的指导下开始编写登录/注册系统的一些基本代码。

但是,他们没有告诉我如何让按钮运行命令,所以,我搜索互联网并找到了 ActionListener,但我不知道如何使用它。我尝试在我的代码中实现它,但出现错误。我不知道出了什么问题,我找不到任何关于如何修复此错误的有用信息:

Apiary is not abstract and does not override abstract method
actionPerformed(java.awt.event.ActionListener) in
java.awt.event.ActionListener

这是我的代码:

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

public class Apiary implements ActionListener {
public static void main(String[]args) {
JFrame frame = new JFrame("Apiary");
frame.setSize(350, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();
frame.add(panel);
placeComponents(panel);

frame.setVisible(true);
panel.addActionListener(placeComponents);
}
private static void placeComponents(JPanel panel) {
panel.setLayout(null);

JLabel usernameLabel = new JLabel("Username");
usernameLabel.setBounds(10,20,80,25);
panel.add(usernameLabel);

JTextField userText = new JTextField(20);
userText.setBounds(100,20,165,25);
panel.add(userText);

JLabel passwordLabel = new JLabel("Password");
passwordLabel.setBounds(10,50,80,25);
panel.add(passwordLabel);

JPasswordField passwordText = new JPasswordField(20);
passwordText.setBounds(100,50,165,25);
panel.add(passwordText);

JButton loginButton = new JButton("Login");
loginButton.setBounds(10, 80, 80, 25);
panel.add(loginButton);
}
}

最佳答案

How can I fix the Java error: myClass is not abstract and does not override abstract method?

添加 actionPerformed(ActionEvent) 方法。请务必添加 @Override 符号。请参阅本工作示例中所述的其他更改。

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

public class Apiary implements ActionListener {

private static void placeComponents(JPanel panel) {
panel.setLayout(null);

JLabel usernameLabel = new JLabel("Username");
usernameLabel.setBounds(10,20,80,25);
panel.add(usernameLabel);

JTextField userText = new JTextField(20);
userText.setBounds(100,20,165,25);
panel.add(userText);

JLabel passwordLabel = new JLabel("Password");
passwordLabel.setBounds(10,50,80,25);
panel.add(passwordLabel);

JPasswordField passwordText = new JPasswordField(20);
passwordText.setBounds(100,50,165,25);
panel.add(passwordText);

JButton loginButton = new JButton("Login");
loginButton.setBounds(10, 80, 80, 25);
panel.add(loginButton);
Apiary apiary = new Apiary();
loginButton.addActionListener(apiary);
}

@Override
public void actionPerformed(ActionEvent e) {
System.out.println("ToDo!");
}

public static void main(String[]args) {
JFrame frame = new JFrame("Apiary");
frame.setSize(350, 150);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel panel = new JPanel();
frame.add(panel);
placeComponents(panel);

frame.setVisible(true);
}
}

一般提示:

  1. 对于登录,我建议使用模态 JDialogJOptionPane 而不是 JFrame 来显示它。请参阅The Use of Multiple JFrames, Good/Bad Practice?
  2. Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上工作,在不同的区域设置中使用不同的 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或 combinations of them以及 white space 的布局填充和边框.

关于java - 如何修复 Java 错误 : myClass is not abstract and does not override abstract method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61166887/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com