web-dev-qa-db-fra.com

Modification des panneaux à l'aide de la disposition des cartes

Salut, je suis désolé si cela a déjà été posté mais j'ai cherché et trouvé d'autres codes que je ne comprenais pas très bien. Je suis nouveau dans la programmation Java et j'aimerais que quelqu'un me pointe dans la bonne direction sur la façon dont je pourrais passer aux panneaux souhaités en appuyant sur un bouton. Toute aide serait très appréciée. J'essaie simplement pour bien comprendre comment ce concept fonctionne.

import Java.awt.*;
import Java.awt.event.*;
import javax.swing.*;  // Packages used in this program imported    

public class onlineGame extends JFrame implements ActionListener
{

    JPanel cards;
    JButton button1, button2, button3;

    public onlineGame() //This is the CONSTRUCTOR method
    {
        //The entry point into your program
        setLayout(new FlowLayout()); //Use this for now.
        setSize(810, 510); //Set the size of the JFrame
        setTitle("Generic Card Game"); //Put Title on top of JFrame
        setBackground(Color.yellow);
        setResizable(false);

        button1 = new JButton("THIS IS BUTTON 1");
        button2 = new JButton("THIS IS BUTTON 2");
        button3 = new JButton("THIS IS BUTTON 3");

        button1.addActionListener(this);
        button2.addActionListener(this);
        button3.addActionListener(this);    

        //Create the cards

        JPanel card1 = new JPanel();
        card1.add(button1);

        JPanel card2 = new JPanel();
        card2.add(button2);

        JPanel card3 = new JPanel();
        card3.add(button3);

        //Create the panel that contains the "cards".

        cards = new JPanel(new CardLayout());

        cards.add(card1);
        cards.add(card2);
        cards.add(card3);

        getContentPane().add(cards); 
        setVisible(true); //Make JFrame visible
    }

    public void actionPerformed(ActionEvent e)
    {    
        if (e.getSource() == button1){    
            //What do i put here to change to Panel card2 or card3 and so on.
        }
    }
    public static void main(String args[])
    {    
        new onlineGame(); // This calls the constructor and runs it    
    }
}
19
user1906515

Pour basculer vers un panneau arbitraire, assurez-vous de spécifier les contraintes lors de l'ajout des composants de la carte:

cards.add(card1, "Card 1");
cards.add(card2, "Card 2");
cards.add(card3, "Card 3");

puis pour passer à un autre composant:

CardLayout cardLayout = (CardLayout) cards.getLayout();
cardLayout.show(cards, "Card 2");

Pour naviguer vers le composant suivant, vous pouvez utiliser:

cardLayout.next(cards);

Lire: CardLayout

32
Reimeus