在HandlerClass实现ActionListener的位置获取错误"此行有多个标记 - 令牌上的语法错误,删除这些 令牌 - 语法错误,插入'}'完成Block"
我在那里遇到了什么问题?
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);
}
}
答案 0 :(得分:0)
您在实施ActionListener
时已关闭但尚未关闭,您需要覆盖的正确方法签名是:
public void actionPerformed(ActionEvent event);
请注意方法名称开头的小写a
,根据所有方法名称从小写字符开始的Java约定。
修改强>
此外,您的HandlerClass
应该是内部class
,因此应将其声明为:
private class HandlerClass implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
//your logic here
}
}
请注意,我在class
名称前添加了HandlerClass
关键字。
另外,我建议您将其重命名为更合适的类名,例如Handler
而不是HandlerClass
。
答案 1 :(得分:0)
有两个错误。第一个是JChrist所描述的。为防止这种情况发生,您应该在方法之前使用
@Override。
但真正的错误是你在最后错过了一个结束的大括号。你永远不会关闭Gui课程。