Maison  >  Article  >  Java  >  Comment utiliser CardLayout pour changer de JPanels dans un JFrame ?

Comment utiliser CardLayout pour changer de JPanels dans un JFrame ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-28 05:46:02346parcourir

How to Use CardLayout to Switch JPanels Inside a JFrame?

Comment changer de JPanels dans un JFrame à l'aide de CardLayout

Changer de JPanels dans un JFrame peut être une tâche simple. Explorons comment y parvenir efficacement à l'aide d'une technique appelée CardLayout.

L'extrait de code suivant fournit un exemple d'utilisation de CardLayout :

<code class="java">CardLayout cardLayout = new CardLayout();
JPanel mainPanel = new JPanel(cardLayout);

MenuPanel menu = new MenuPanel();
GamePanel game = new GamePanel();
mainPanel.add(menu, "menu");
mainPanel.add(game, "game");</code>

Ici, nous créons une instance de CardLayout appelée cardLayout. et un panneau principal, mainPanel, qui utilise ce gestionnaire de mise en page. On ajoute ensuite deux panneaux, menu et game, au mainPanel avec leurs noms respectifs, "menu" et "game".

Lorsque vous appelez la méthode gameOn(), cela change la visibilité des panneaux à l'aide de cardLayout .montrer(). Par exemple, le code suivant :

<code class="java">public void gameOn() {
    cardLayout.show(mainPanel, "game");
}</code>

masquera le panneau de menu et affichera le panneau de jeu à l'avant. Cette méthode évite d'avoir à ajouter et supprimer constamment des composants, ce qui peut s'avérer inefficace.

Voici un exemple que vous pouvez exécuter :

<code class="java">import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class GameFrame extends JFrame implements ActionListener{

    CardLayout cardLayout;
    JPanel mainPanel;
    MenuPanel menu;
    GamePanel game;

    public GameFrame() {
        // ... (similar to previous example)
    }

    // ...

    public void actionPerformed(ActionEvent e) {
        gameOn();
    }

    public void gameOn() {
        // ... (similar to previous example)
    }

    public static void main(String[] args) {
        // ... (similar to previous example)
    }
}</code>

Cet exemple démontre l'utilisation de CardLayout pour basculer de manière transparente entre le menu et les panneaux de jeu dans un JFrame.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn