Ich habe zwei JPanels, zwischen denen ich wechseln möchte, wenn der Benutzer darauf klickt.Wie man zwischen JPanels in CardLayout wechselt?
Also habe ich ein Window
mit einem JFrame
darin erstellt. Dann erstelle ich einen JPanel
namens cards
und setze sein Layout auf CardLayout
. Dann erstelle ich zwei weitere JPanel
s - das sind die Panels, zwischen denen ich wechseln möchte - und ich füge sie zu cards
hinzu. Ich füge mouseClicked
Event-Listener hinzu und ich füge cardLayout.next(cards)
hinzu, damit der Schalter geschieht. Es funktioniert nicht.
Hier ist mein Code:
public class Window {
private JFrame frame;
private JPanel cards;
private JPanel panel1;
private JPanel panel2;
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Window window = new Window();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public Window() {
initialize();
}
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 790, 483);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
cards = new JPanel();
cards.setLayout(new CardLayout());
panel1 = new JPanel();
panel1.setBackground(Color.BLACK);
panel1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
java.awt.Toolkit.getDefaultToolkit().beep(); //debug beep
CardLayout cl = (CardLayout) cards.getLayout();
cl.next(cards);
}
});
panel2 = new JPanel();
panel2.setBackground(Color.WHITE);
panel1.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e){
CardLayout cl = (CardLayout) cards.getLayout();
cl.next(cards);
}
});
cards.add(panel1, "panel1");
cards.add(panel2, "panel2");
frame.getContentPane().add(cards);
}
}
Warum es nicht funktioniert?
Danke. Was für ein nerviger Fehler. Ich nehme an, dass ich meine Variablen von Anfang an nicht gut benannt habe. –