ログインパネルとGUIパネルの2つのクラスがあります。以下のコードでは、ログインすると自分のGUIが表示され、ログインが非表示になることを示しています。そして、しばらくしてログアウトボタンがクリックされたときにログインパネルを再度呼び出さなければなりません。下のコードは、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