【发布时间】:2013-07-13 09:15:43
【问题描述】:
我是一个初学java程序员,试图通过一个Inner类来实现ActionListener。以下是我想在单击按钮时更改标签文本的简单代码,但我不想对多个组件使用getSource,而是要使用内部类。这是我的代码:
public class InnerClasses extends JPanel {
static JFrame frame ;
static JButton button ;
static JLabel label ;
public static void main(String[] args) {
InnerClasses i= new InnerClasses();
frame= new JFrame("Inner class");
frame.setSize(400,400);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(i);
label = new JLabel(BorderLayout.NORTH);
label.setText("I m label");
i.add(label);
button = new JButton(BorderLayout.SOUTH);
button.setText("Click me ");
button.addActionListener(new innerclass() );
i.add(button);
frame.setVisible(true);
}
class innerclass implements ActionListener {
@Override
public void actionPerformed(ActionEvent arg0) {
label.setText("i have been changed");
}
}
现在,当我尝试将侦听器注册到按钮时,它会给出错误
无法访问 InnerClasses 类型的封闭实例。必须符合条件 具有 InnerClasses 类型的封闭实例的分配(例如 x.new A() 其中 x 是 InnerClasses 的一个实例。
如果我在做一些违反语法的事情或这里有什么问题,请帮助我
【问题讨论】:
标签: java swing jframe actionlistener inner-classes