Я начинающий Java-программист, пытающийся реализовать ActionListener
через класс Inner. Ниже приведен простой код, в котором я хочу изменить текст метки при нажатии кнопки, но вместо использования getSource
для нескольких компонентов я хочу использовать Inner Class. Вот мой код:ActionPerfomed Метод не работает во внутреннем классе
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).
Пожалуйста, помогите мне с ним, если я делаю что-то agaisnt синтаксису или что случилось здесь
Возможный дубликат [Java - Нет ограждающих экземпляра типа Foo доступен] (http://stackoverflow.com/questions/9560600/java-no-enclo sing-instance-of-type-foo-is-available) – fabian