У меня есть 2 класса, панель входа и панель графического интерфейса. В приведенном ниже коде сказано, что при входе в систему он отображает мой графический интерфейс и скрывает мой Логин. И в какой-то момент он должен снова вспомнить эту панель входа, когда нажата кнопка выхода из системы. Приведенный ниже код приводит к ошибке StackOverFlow. Я знаю, что это значит, но я не знаю, как это исправить. Есть ли лучшее решение для вызова таких методов из другого класса, когда этот «другой класс» должен вызывать что-то тоже в классе, который его вызвал?Как классы могут вызвать методы друг к другу?
//Login Panel
public class MyPanel1 extends JFrame implements ActionListener{
MyPanel2 p2 = new MyPanel2();
.
.
public void actionPerformed(ActionEvent e){
//if login is a success
setVisible(false);
p2.setVisible(true);
}
}
//GUI Panel
public class MyPanel2 extends JFrame implements ActionListener{
MyPanel1 p1 = new MyPanel1();
.
.
public void actionPerformed(ActionEvent e){
//if logout button is clicked
setVisible(false);
p1.setVisible(true);
}
}
Мой трассировки стека:
Exception in thread "main" java.lang.StackOverflowError
at sun.awt.Win32GraphicsConfig.getBounds(Native Method)
at sun.awt.Win32GraphicsConfig.getBounds(Win32GraphicsConfig.java:222)
at java.awt.Window.init(Window.java:505)
at java.awt.Window.<init>(Window.java:537)
at java.awt.Frame.<init>(Frame.java:420)
at java.awt.Frame.<init>(Frame.java:385)
at javax.swing.JFrame.<init>(JFrame.java:189)
at Login.<init>(Login.java:29)
at Cashier.<init>(Cashier.java:10)
at Login.<init>(Login.java:9)
at Cashier.<init>(Cashier.java:10)
at Login.<init>(Login.java:9)
at Cashier.<init>(Cashier.java:10)
at Login.<init>(Login.java:9)
вы должны избегать таких круговых зависимостей ... а не google о обратных вызовах! –
Можете ли вы разместить трассировку стека, пожалуйста? –
См. Мой отредактированный пост – ryannjeffers