Hallo!
Ich hab folgendes Problem:
Ich habe zwei Panels zwischen denen ich hin und her schalten möchte. Dafür nutze ich das CardLayout. Da der Quelltext sehr lang ist möchte ich die einzelnen Panels in eigene Klassen schreiben. Ich habe erstmal zum üben alles in einer Klasse geschrieben -hat alles funktioniert
und dann wollte ich das auf mehrere Klassen aufteilen doch jetzt zeigt er nach dem Klick auf den Button nicht mehr das zweite Panel an
Ich hab hier mal beide versionen:
Alles in einer Klasse:
Und hier jetzt mit den drei Klassen:
Klasse TestMain: (Ausgabe und Panel in das die anderen Panels als Karten kommen)
Die KlasseMenue: (Panel das als erstes gezeigt werden soll)
Klasse TestEdit: (zweites Panel, was angezeigt werden soll)
Klasse TestListener: (ActionListener)
Ich weiß, es ist echt viel Code aber ich hänge da nun schon ziemlich lange dran fest und bin voll verzweifelt...... also danke, an alle, die mir helfen!!
Ich hab folgendes Problem:
Ich habe zwei Panels zwischen denen ich hin und her schalten möchte. Dafür nutze ich das CardLayout. Da der Quelltext sehr lang ist möchte ich die einzelnen Panels in eigene Klassen schreiben. Ich habe erstmal zum üben alles in einer Klasse geschrieben -hat alles funktioniert


Ich hab hier mal beide versionen:
Alles in einer Klasse:
Code:
package angebotPresentationLayer;
import java.awt.*;
import javax.swing.*;
public class test extends JFrame implements ActionListener{
JButton fortbt;
JButton zurbt;
CardLayout cardLayout;
JPanel jpMain;
public test(){
zurbt = new JButton("zurück");
fortbt = new JButton("fortfahren");
zurbt.addActionListener(this);
fortbt.addActionListener(this);
cardLayout = new CardLayout();
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
JPanel jpMenue = new JPanel();
JPanel jpEdit = new JPanel();
jpMain = new JPanel();
cp.add(jpMain, BorderLayout.CENTER);
jpMenue.setLayout(new GridBagLayout());
jpEdit.setLayout(new GridBagLayout());
jpMain.setLayout(cardLayout);
jpMain.add(jpMenue, "1");
jpMain.add(jpEdit, "2");
jpMenue.add(fortbt,
new GridBagConstraints(
0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0),
0, 0));
jpEdit.add(zurbt,
new GridBagConstraints(
0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0),
0, 0));
}
public void actionPerformed(ActionEvent ae){
if (ae.getSource().equals(fortbt)){
System.out.println("Button wurde geklickt");
cardLayout.show(jpMain, "2");
}
if (ae.getSource().equals(zurbt)){
System.out.println("Button wurde geklickt");
cardLayout.show(jpMain, "1");
}
}
public static void main(String[] args){
test t = new test();
t.setSize(500, 500);
t.setVisible(true);
}
}
Und hier jetzt mit den drei Klassen:
Klasse TestMain: (Ausgabe und Panel in das die anderen Panels als Karten kommen)
Code:
package angebotPresentationLayer;
import java.awt.*;
import javax.swing.*;
public class TestMain extends JFrame{
CardLayout cardLayout;
JPanel jpMain;
TestMenue tmenue = new TestMenue();
TestEdit tedit = new TestEdit();
TestMain(){
cardLayout = new CardLayout();
Container cp = getContentPane();
cp.setLayout(new BorderLayout());
jpMain = new JPanel();
cp.add(jpMain, BorderLayout.CENTER);
jpMain.setLayout(cardLayout);
jpMain.add(tmenue.jpMenue, "Menue");
jpMain.add(tedit.jpEdit, "Edit");
}
public static void main(String[] args){
TestMain tm = new TestMain();
tm.setSize(500, 500);
tm.setVisible(true);
}
}
Die KlasseMenue: (Panel das als erstes gezeigt werden soll)
Code:
package angebotPresentationLayer;
import java.awt.*;
import javax.swing.*;
public class TestMenue extends JFrame{
JPanel jpMenue;
JButton fortbt;
TestMenue(){
fortbt = new JButton("fortfahren");
TestListener tlis = new TestListener(this);
fortbt.addActionListener(tlis);
jpMenue = new JPanel();
jpMenue.setLayout(new GridBagLayout());
jpMenue.add(fortbt,
new GridBagConstraints(
0, 5, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 8, 0, 0),
0, 0));
}
}
Klasse TestEdit: (zweites Panel, was angezeigt werden soll)
Code:
package angebotPresentationLayer;
import java.awt.*;
import javax.swing.*;
class TestEdit extends JFrame{
JPanel jpEdit;
JLabel titellbl;
TestEdit(){
titellbl = new JLabel("Titel des JPanels");
jpEdit = new JPanel();
jpEdit.setLayout(new GridBagLayout());
jpEdit.add(titellbl,
new GridBagConstraints(
0, 0, 1, 1, 0.0, 0.0,
GridBagConstraints.WEST, GridBagConstraints.NONE,
new Insets(0, 0, 0, 0),
0, 0));
}
}
Klasse TestListener: (ActionListener)
Code:
package angebotPresentationLayer;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.*;
public class TestListener implements ActionListener{
TestMenue tmenue;
TestMain tmain;
TestListener(TestMenue tm){
tmenue = tm;
}
public void actionPerformed(ActionEvent ae) {
if (ae.getSource().equals(tmenue.fortbt)){
System.out.println("Button wurde geklickt");
tmain = new TestMain();
tmain.cardLayout.show(tmain.jpMain, "Edit");
}
}
}