public void actionPerformed(ActionEvent e){
if(e.getActionCommand().equalsIgnoreCase("Datensatz Einfügen")){
@SuppressWarnings("unused")
BookOrReader insert = new BookOrReader("Buch oder Leser");
setVisible(false);
}
Das ist glaub ich nicht die eleganteste Variante in die Klasse BookOrReader zu wechseln oder?
Nur mir fällt keine bessere ein
Gibt es da einen Befehl für den ActionListener damit man die Klasse wechseln kann?
In der Klasse BookOrReader befindet sich dann ein weiterer JFrame.. und von dem möcht ich dann auch per JButton wieder zurückwechseln können.
Nur dann müsst ich ja wieder ein Objekt von der Hauptklasse anlegen, was glaub ich nicht ganz sinnvoll ist.
Würdest du bitte grob skizzieren, was du mit "Klasse wechseln" meinst? ???:L
Wenn es dir darum geht, irgendwelche fenster ein und auszublenden, dann schaue dir bitte JDialog und JOptionPane an.
@SuppressWarnings("unused") sieht extrem gruselig aus, dürfte ich dich mal fragen, welchen guten grund du hast, das in den code mit reinzunehmen? Nicht dass du den stolperstein dann später vergisst und drinlässt :autsch:
Hab eine Klasse Startmenu und eine Klasse BookOrReader, beide haben JFrame...
Jetzt möcht ich mit einem JButton + ActionListener von einer Klasse in die andere wechseln können.
Also wenn ich den JButton anklicke, dass ich vom Startmenu in BookOrReader komme und umgekehrt.
Klar du kannst auch beim JFrame ein
[HIGHLIGHT="Java"]
frame.remove(startMenuPanel);
frame.add(bookOrReaderPanel);
pack();[/HIGHLIGHT]
machen. (Bzw. andersrum).
Ich weiss jetz nich ob CardLayout hier vllt etwas überladen für dein Problem
ist, aber so elegant ist der Code hier oben nicht wirklich.
Ich hab ja in der BookOrReader Klasse auch einiges an Zeug stehen.
Wie krieg ich denn das hin, dass er das Zeug dann auch ausführt in diesem Panel?
Dazu müsste ich doch erst in die Klasse rein, bzw. diese instanzieren!?
Ich mein.. wie greif ich auf das Panel von BookOrReader zu?
Dazu müsste ich es wahrscheinlich static machen!?
In Startmenu Zeile 32 möchte ich dass mein JPanel geschlossen wird, und das von BookOrReader ausgeführt wird, mit alldem was in der Klasse BookOrReader drinnensteht.
In BookOrReader Zeile 35 möchte ich ebenfalls das das JPanel wieder geschlossen wird und ich wieder ins Startmenu zurückwechsle.
public static MainMenu getInstance(){
return instance;
}
public static void initialize(JFrame parent){
instance = new MainMenu(parent);
}
}[/HIGHLIGHT]
Das gleiche machst du mit deinem anderen Panel.
Beim Konstruktor von dem Frame rufst du dann bei beiden Panel-Klassen diese
initialize-Methode mit "this" auf.
So, und die Buttons zum Wechseln auf das andere Panel sehen dann so aus,
dass sie im ActionListener diese setMainContent() auf dem Frame aufrufen,
und das kennen sie ja, weil du es ihnen im Konstruktor mitgibst. zB
[HIGHLIGHT="Java"]// in der Klasse MainMenu
public void actionPerformed(ActionEvent e){
parent.setMainContent(BookOrReaderMenu.getInstance());
}
[/HIGHLIGHT]
Also... ich muss sagen vllt ist das auch nich so besonders geil gelöst...
Aber funktionieren tut es zumindest.
Ansonsten kannst du das ganze weniger "kompliziert" machen, und einfach eine
bidirektionale Beziehung aufbauen:
Jedes Panel kennt nicht nur das Frame sondern noch das andere Panel.