Ich habe ein JFrame, in diesen JFrame werden bzw. sollten eigentlich nur die JPanel ausgetauscht werden. Sprich der Benutzer macht eine Interaktion also soll das nächste JPanel angezeigt werden.
Nun ist es so das wenn man auf weiter klickt das JPanel 1 weiter da bleibt und das JPanel 2 quasi darunter gezeichnet wird (kann man erkennen wenn man das Fenster dann breiter zieht).
Hier nun ein wenig Code:
Hier wird die Anwendung initialisiert:
JFrame frame = MainFrame.getInstance();
MainWindow main = MainWindow.getInstance(); //JFrame in den die JPanels gezeichnet werden
frame.add(main.createApplicationFrame());
JMenuBar menubar = main.createMenuBar();
frame.setJMenuBar(menubar);
frame.setLocationRelativeTo(null);
frame.setBounds(100, 100, 500, 400);
frame.setVisible(true);
wenn der Benutzer nun einen Button betätigt wird folgender Code ausgeführt:
doch bereits dort hab ich nur noch ein Objekt in der “getCards()” Methode.
die MainFrame sieht wie folgt aus:
public class MainFrame
{
private static final JPanel cards = new JPanel(new CardLayout());
public MainFrame() {}
public void addComponentToPane(Container pane) {
JPanel mainWin = MainWindow.getInstance().createApplicationFrame();
JPanel previewWin = PreviewWindow.getInstance().createPreviewFrame();
cards.add(previewWin, "Preview");
cards.add(mainWin, "Main");
pane.add(previewWin);
pane.add(mainWin);
}
public static JPanel getCards()
{
return cards;
}
}
nur hab ich wieder mal keine Ahnung was da schief läuft.
Die JPanel Cards ist static und wird ja bereits zum Start gefüllt. Die Values sind ja auch richtig gesetzt.
Bin gerade echt überfragt. Ich hatte es auch schon versucht den Listener des Buttons auf die MainFrame Klasse zusetzen (mit entsprechender Methode dann in der MainFrame Klasse) hat aber auch nicht geklappt.
Komponenten dürfen nur zu einem Container hinzugefügt werden. Hier sollte wohl eher cards dem pane hinzugefügt werden.
Neben diesem static scheinst Du auch viele Singletons zu nutzen? Ich gehöre eigentlich nicht zu den Leuten die das Singleton Pattern verteufeln, aber im GUI Bereich sehe ich aber auch keinen vernünftigen Grund der deren Einsatz rechtfertigt.
Grundsätzlich würde ich versuchen möglichst ohne static auszukommen. I.d.R. ist es unnötig und macht die ganze Applikation eher fehleranfälliger.