Maison  >  Article  >  Java  >  Comment remplacer dynamiquement des JPanels dans un JFrame ?

Comment remplacer dynamiquement des JPanels dans un JFrame ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 17:20:03972parcourir

How to Dynamically Replace JPanels in a JFrame?

Remplacement dynamique d'un JPanel dans un JFrame

Le remplacement dynamique d'un JPanel dans un JFrame implique de comprendre le système de gestion de mise en page dans Swing. Bien que vous ayez tenté d'utiliser pack() pour ajuster la mise en page, cela régit principalement les dimensions de la fenêtre plutôt que de gérer le remplacement des composants.

Utilisation de CardLayout pour la gestion dynamique de JPanel

CardLayout fournit une solution élégante pour basculer entre plusieurs panneaux dans un seul conteneur. Voici comment l'implémenter :

  1. Créer un objet CardLayout :

    <code class="java">CardLayout cardLayout = new CardLayout();</code>
  2. Définir le CardLayout en tant que gestionnaire de mise en page du conteneur :

    <code class="java">parentFrameJPanelBelongsTo.setLayout(cardLayout);</code>
  3. Ajouter les panneaux au conteneur :

    <code class="java">parentFrameJPanelBelongsTo.add(panel, "CUSTOM_PANEL_ID");
    parentFrameJPanelBelongsTo.add(newOtherPanel, "NEW_PANEL_ID");</code>
  4. Basculer entre les panneaux :

    <code class="java">cardLayout.show(parentFrameJPanelBelongsTo, "CUSTOM_PANEL_ID");</code>
  5. Emballer le cadre :

    <code class="java">parentFrameJPanelBelongsTo.pack();</code>

Exemple d'utilisation :

Dans votre exemple, vous pouvez modifier le code comme suit :

<code class="java">CustomJPanelWithComponentsOnIt panel = new CustomJPanelWithComponentsOnIt();

// Create and set the CardLayout
CardLayout cardLayout = new CardLayout();
parentFrameJPanelBelongsTo.setLayout(cardLayout);

// Add the panels to the frame
parentFrameJPanelBelongsTo.add(panel, "CUSTOM_PANEL_ID");

// Switch to the desired panel
cardLayout.show(parentFrameJPanelBelongsTo, "CUSTOM_PANEL_ID");

// Pack the frame
parentFrameJPanelBelongsTo.pack();</code>

En utilisant CardLayout, vous pouvez remplacer de manière transparente JPanels dans un JFrame à la volée, assurant une interface dynamique et réactive pour l'utilisateur.

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