Я борюсь с ActionListener в Java в родительском классе, я попробовал кучу возможных решений, но не смог заставить его работать. Это здесь также не помогло: Java actionlistener actionPerformed in different classActionListener в родительском классе
Проблема заключается в следующем:
Class2 расширяет Class1, у меня есть кнопка в Class2. Как только кнопка в классе2 нажата, Class1 должен быть уведомлен через прослушиватель действий и выполнить событие.
Я изо всех сил стараюсь, чтобы Class1 знал, что произошло событие. Мне это показалось довольно простым, но я все же боюсь.
Ваша помощь будет очень искупительной, спасибо!
Родитель Класс
package test;
//imports removed for better visibility
public class ParentClass extends JPanel implements ActionListener{
JFrame frame;
public void createParentGui() {
frame = new JFrame("Frame");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JPanel mainCard = new JPanel(new CardLayout(20, 20));
ChildClass card1 = new ChildClass();
mainCard.add(card1);
frame.add(mainCard, BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
System.out.println("Button pressed, action!");
}
}
Детский класс
package test;
//imports removed for better visibility
public class ChildClass extends ParentClass {
ActionListener listener = null; //this is probably not right, how to do
//with a local variable when passing it to the parent class?
public Child() {
createGui();
}
private void createGui() {
final JButton b = new JButton("press me");
b.addActionListener(listener);
add(b);
}
}
, если 'Class2' знает, что действие выполнено' Class1' должно также знать, так как 'Class2' является' Class1'. В порядке, чтобы мы могли помочь вам, вероятно, включить ваш код. – SomeJavaGuy
. Я думаю, вам стоит немного почитать о java-основах. Как понимание того, что означает, что ** объект ** имеет класс 2. И затем: укажите код, пожалуйста; на данный момент нет никаких шансов, что мы сможем помочь с таким вводом. Таким образом: положите [mcve] .... – GhostCat
Спасибо за ваши ответы. Я добавил пример кода, который показывает проблему. – Doncholio