


Comment basculer efficacement entre les JPanels dans un JFrame à l'aide de CardLayout ?
Changement de JPanels dans un JFrame
Problème :
Comment puis-je basculer par programme entre différents JPanels dans un JFrame, où chaque panneau remplit un objectif distinct, comme un menu ou une interface de jeu ?
Solution :
Au lieu de supprimer et d'ajouter des panneaux, utilisez un CardLayout, qui fournit un moyen efficace de gérer plusieurs panneaux dans un conteneur. Voici comment l'implémenter :
- Créez un objet CardLayout et attribuez-le à un JPanel comme gestionnaire de mise en page :
CardLayout cardLayout = new CardLayout(); JPanel mainPanel = new JPanel(cardLayout);
- Ajoutez les panneaux souhaités à le panneau principal, en identifiant chacun avec un nom unique :
mainPanel.add(menuPanel, "menu"); mainPanel.add(gamePanel, "game");
- Dans la logique du jeu, invoquez la méthode show() sur le CardLayout pour afficher le panneau souhaité :
cardLayout.show(mainPanel, "game");
Avantages de l'utilisation de CardLayout :
- Basculez facilement entre les panneaux sans avoir besoin d'opérations complexes d'ajout/suppression.
- Simplifiez le code structurez et réduisez le risque d'erreurs d'exécution.
- Gérez efficacement plusieurs panneaux dans un seul conteneur.
Exemple de code :
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 { CardLayout cardLayout; // CardLayout for managing panels JPanel mainPanel; // Main panel to hold the different JPanels public GameFrame() { cardLayout = new CardLayout(); mainPanel = new JPanel(cardLayout); MenuPanel menuPanel = new MenuPanel(); // Menu panel GamePanel gamePanel = new GamePanel(); // Game panel mainPanel.add(menuPanel, "menu"); // Add menu panel with "menu" identifier mainPanel.add(gamePanel, "game"); // Add game panel with "game" identifier JButton startGameButton = new JButton("Start Game"); startGameButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cardLayout.show(mainPanel, "game"); // Show game panel when button is clicked } }); add(mainPanel); // Add main panel to the JFrame add(startGameButton, BorderLayout.SOUTH); // Add the start game button below the main panel setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(new Dimension(600, 400)); setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new GameFrame()); } class MenuPanel extends JPanel { // Menu panel with menu text MenuPanel() { setBackground(Color.GREEN); add(new JLabel("Menu")); } } class GamePanel extends JPanel { // Game panel with game text GamePanel() { setBackground(Color.BLUE); add(new JLabel("Game")); } } }
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds











Dépannage et solutions au logiciel de sécurité de l'entreprise qui fait que certaines applications ne fonctionnent pas correctement. De nombreuses entreprises déploieront des logiciels de sécurité afin d'assurer la sécurité des réseaux internes. ...

Solutions pour convertir les noms en nombres pour implémenter le tri dans de nombreux scénarios d'applications, les utilisateurs peuvent avoir besoin de trier en groupe, en particulier en un ...

Le traitement de la cartographie des champs dans l'amarrage du système rencontre souvent un problème difficile lors de l'exécution d'amarrage du système: comment cartographier efficacement les champs d'interface du système a ...

Commencez le printemps à l'aide de la version IntelliJideaultimate ...

Lorsque vous utilisez MyBatis-Plus ou d'autres cadres ORM pour les opérations de base de données, il est souvent nécessaire de construire des conditions de requête en fonction du nom d'attribut de la classe d'entité. Si vous manuellement à chaque fois ...

Conversion des objets et des tableaux Java: Discussion approfondie des risques et des méthodes correctes de la conversion de type de distribution De nombreux débutants Java rencontreront la conversion d'un objet en un tableau ...

Explication détaillée de la conception des tables SKU et SPU sur les plates-formes de commerce électronique Cet article discutera des problèmes de conception de la base de données de SKU et SPU dans les plateformes de commerce électronique, en particulier comment gérer les ventes définies par l'utilisateur ...

Comment la solution de mise en cache Redis réalise-t-elle les exigences de la liste de classement des produits? Pendant le processus de développement, nous devons souvent faire face aux exigences des classements, comme l'affichage d'un ...
