Singleton mit CardLayout zeigt keine Karte an, wenn eine andere Klasse Singleton.instance.show () aufruft
public class MainWindow extends JPanel {
public static MainWindow instance = new MainWindow();
private CardLayout cards = new CardLayout();
public MainWindow() {
setLayout(cards);
add(new FirstPage(), Pages.FIRST.toString());
add(new SecondPage(), Pages.SECOND.toString());
add(new ThirdPage(), Pages.THIRD.toString());
}
public void showPage(Pages page) {
cards.show(this, page.toString());
}
}
dasshowPage(page);
Methode funktioniert gut, wenn ich es im Konstruktor von aufrufenMainWindow
. Aber wenn ich versuche anzurufenMainWindow.instance.showPage(Pages.SECOND);
von einem ActionListener inFirstPage
nichts passiert. Ich habe das überprüftshowPage(page)
Methode funktioniert korrekt. Ich habe überprüft, ob das ActionEvent ausgelöst wurde und die richtige if / else-Klausel eingegeben. Was mache ich falsch? Warum wird meine zweite Seite nicht angezeigt?
public class FirstPage extends JPanel {
private JButton showSecond = new JButton("Show Second");
private JButton showThird = new JButton("Show Third");
public FirstPage() {
insertButton(showSecond);
insertButton(showThird);
}
private void insertButton(JButton button) {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == showSecond) {
MainWindow.instance.showPage(Pages.SECOND);
} else {
MainWindow.instance.showPage(Pages.THIRD);
}
}
});
this.add(button);
}
}