我是一个初学者java程序员,试图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 类型的封闭实例来限定分配(例如 xnew A(),其中 x 是 InnerClasses 的实例)。
如果我在做一些违反语法的事情或这里有什么问题,请帮助我