我正在练习使用内部课程,但在作业问题上遇到困难:如下:
创建一个 Swing 组件类 BetterButtons,它扩展 JPanel 并具有三个标记为“一”、“二”和“三”的 Jbutton 实例。在 BetterButtons 的构造函数中,编写一个实现 ActionListener 的本地类 ButtonListener。这个本地类有一个字段字符串名称和一个构造函数,该构造函数接受一个分配给字段名称的字符串参数。方法 void actionPerformed 在控制台通知上输出标记为 name 的按钮已被按下。在 BetterButtons 的构造函数中,创建 ButtonListener 的三个实例,每个按钮一个监听其动作。
我快完成了,但是,我在该行得到一个非法的表达式开始错误:
public void actionPerformed(ActionEvent e){
这是我的代码:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class BetterButtons extends JPanel {
JButton one, two, three;
JPanel p;
public BetterButtons() {
class ButtonListener implements ActionListener {
String name;
*****public ButtonListener(String name) {****
public void actionPerformed(ActionEvent e){
System.out.println("Button "+name+"has been pressed.");
}
}
}
one = new JButton("One");
two = new JButton("Two");
three = new JButton("Three");
one.addActionListener(new ButtonListener());
two.addActionListener(new ButtonListener());
three.addActionListener(new ButtonListener());
p = new JPanel();
p.add(one);
p.add(two);
p.add(three);
this.add(p);
}
public static void main(String[] args) {
JFrame f = new JFrame("Lab 2 Exercise 2");
BetterButtons w = new BetterButtons();
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.getContentPane().setLayout(new FlowLayout());
f.getContentPane().add(w);
f.pack();
f.setVisible(true);
}
}
另外,如何引用要分配给字符串变量名的正确值?
先感谢您