Java ActionPerformed&ActionListener&implementing
在HandlerClass实现ActionListener的行上获取错误,并在该行上显示多个标记 -令牌上的语法错误,请删除这些 代币 -语法错误,插入“}”以完成块 我哪里错了Java ActionPerformed&ActionListener&implementing,java,eventhandler,implements,Java,Eventhandler,Implements,在HandlerClass实现ActionListener的行上获取错误,并在该行上显示多个标记 -令牌上的语法错误,请删除这些 代币 -语法错误,插入“}”以完成块 我哪里错了 import java.awt.FlowLayout; import java.awt.Font; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JCheckBox; import
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class Gui extends JFrame {
private JTextField tf;
private JCheckBox boldbox;
private JCheckBox italicbox;
public Gui() {
super("Hakuna Matata");
setLayout(new FlowLayout());
tf = new JTextField("This is a sentence");
tf.setFont(new Font("Serif", Font.PLAIN, 14));
add(tf);
boldbox = new JCheckBox("bold");
italicbox = new JCheckBox("italicbox");
add(boldbox);
add(italicbox);
HandlerClass handler = new HandlerClass();
boldbox.addActionListener(handler);
italicbox.addActionListener(handler);
}
private HandlerClass implements ActionListener {
public void ActionPerformed(ActionEvent event) {
Font font = null;
if(boldbox.isSelected() && italicbox.isSelected())
font = new Font("Serif", Font.BOLD + Font.ITALIC, 14);
else if(boldbox.isSelected())
font = new Font("Serif", Font.BOLD, 14);
else if(italicbox.isSelected())
font = new Font("Serif", Font.ITALIC, 14);
else
font = new Font("Serif", Font.PLAIN, 14);
tf.setFont(font);
}
}
在实现ActionListener的过程中,您很接近,但还没有实现,您需要覆盖的正确方法签名是:
public void actionPerformed(ActionEvent event);
请注意方法名开头的小写字母a,按照Java惯例,所有方法名都以小写字符开头
编辑
此外,HandlerClass应该是一个内部类,因此应该声明为:
private class HandlerClass implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
//your logic here
}
}
请注意,我在HandlerClass名称之前添加了class关键字。
此外,我建议您将其重命名为更合适的类名,例如Handler而不是HandlerClass。有两个错误。第一个是JChrist所描述的。为了防止这种情况,您应该在方法之前使用 @Override
但真正的错误是,你在结尾缺少了一个结束的卷曲括号。您从未关闭Gui类。为什么要用分号关闭标题?之后是一个主体。他指的是ActionListener接口,它没有声明方法主体,只是标题。是的,你是对的,你的实现中有一个主体。我关闭它是因为我指定了它在接口中的方式,接口没有实现:我在那里有一个括号。在我在这里发布问题之前,我确保没有遗漏分号。我不想把你的时间浪费在一个新手的错误上,但我删除了分号,因为我有一个错误,说“摆脱它”,所以我就这么做了,尽管我不明白为什么,因为我确信它应该在那里。