Changer de JPanels avec un CardLayout
Lorsque vous travaillez avec des hiérarchies de composants en Java, une tâche courante consiste à faire la transition entre différents panneaux graphiques dans un seul cadre . Dans le cas spécifique du basculement entre un menu et un panneau de jeu, une idée fausse courante consiste à tenter d'ajouter et de supprimer des composants de manière dynamique.
Pour basculer efficacement entre les panneaux, envisagez d'utiliser un CardLayout, conçu à cet effet. Voici comment cela fonctionne :
Exemple d'implémentation :
Considérez l'exemple de code suivant qui utilise un CardLayout pour basculer entre un panneau de menu et un panneau de jeu :
<code class="java">import java.awt.*; import java.awt.event.*; import javax.swing.*; public class GameFrame extends JFrame implements ActionListener { private JPanel mainPanel; private CardLayout cardLayout; private MenuPanel menuPanel; private GamePanel gamePanel; public GameFrame() { mainPanel = new JPanel(cardLayout = new CardLayout()); menuPanel = new MenuPanel(); gamePanel = new GamePanel(); mainPanel.add(menuPanel, "menu"); mainPanel.add(gamePanel, "game"); JButton goGameButton = new JButton("Go to Game"); goGameButton.addActionListener(this); add(mainPanel); add(goGameButton, BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); pack(); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { cardLayout.show(mainPanel, "game"); } public static void main(String[] args) { SwingUtilities.invokeLater(() -> new GameFrame()); } } class MenuPanel extends JPanel { public MenuPanel() { setBackground(Color.GREEN); add(new JLabel("Menu")); } @Override public Dimension getPreferredSize() { return new Dimension(300, 300); } } class GamePanel extends JPanel { public GamePanel() { setBackground(Color.BLUE); add(new JLabel("Game")); } @Override public Dimension getPreferredSize() { return new Dimension(300, 300); } }</code>
En utilisant un CardLayout, vous pouvez basculer de manière transparente entre les panneaux sans avoir besoin de supprimer et de rajouter des composants, ce qui simplifie le code et évite les performances potentielles. problèmes.
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!