Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ActionPerformed&ActionListener&implementing_Java_Eventhandler_Implements - Fatal编程技术网

Java ActionPerformed&ActionListener&implementing

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

在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 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接口,它没有声明方法主体,只是标题。是的,你是对的,你的实现中有一个主体。我关闭它是因为我指定了它在接口中的方式,接口没有实现:我在那里有一个括号。在我在这里发布问题之前,我确保没有遗漏分号。我不想把你的时间浪费在一个新手的错误上,但我删除了分号,因为我有一个错误,说“摆脱它”,所以我就这么做了,尽管我不明白为什么,因为我确信它应该在那里。