Maison >Java >javaDidacticiel >Comment changer dynamiquement les éléments de l'interface utilisateur en fonction de la sélection ComboBox à l'aide du CardLayout de Java ?
Comment modifier dynamiquement les éléments de l'interface utilisateur en fonction de la sélection ComboBox
Dans les interfaces utilisateur graphiques (GUI), il est souvent nécessaire d'afficher différents ensembles de champs en fonction de la sélection effectuée dans une combo. Cet article explique comment obtenir cet effet à l'aide de CardLayout de Java.
Définition du problème :
Dans une fenêtre de dialogue, vous devez afficher un groupe de contrôles lorsqu'une combinaison particulière L'élément de la boîte est sélectionné et un groupe de contrôles différent lorsqu'il n'est pas sélectionné. Essentiellement, vous souhaitez basculer entre deux couches de contrôles différentes en fonction de la sélection de la zone de liste déroulante.
Implémentation de CardLayout :
CardLayout est un gestionnaire de mise en page JPanel qui permet plusieurs panneaux à empiler les uns sur les autres, avec un seul panneau visible à la fois. Cela le rend idéal pour basculer entre différents éléments de l'interface utilisateur en réponse à des événements externes.
Extrait de code :
Le code Java suivant montre comment utiliser CardLayout pour modifier les éléments de l'interface utilisateur. basé sur la sélection de la zone de liste déroulante :
<code class="java">import java.awt.BorderLayout; import java.awt.CardLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Random; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class CardPanel extends JPanel { private static final Random random = new Random(); private static final JPanel cards = new JPanel(new CardLayout()); private static final JComboBox combo = new JComboBox(); private final String name; public CardPanel(String name) { this.name = name; this.setPreferredSize(new Dimension(320, 240)); this.setBackground(new Color(random.nextInt())); this.add(new JLabel(name)); } @Override public String toString() { return name; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { create(); } }); } private static void create() { JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); for (int i = 1; i < 9; i++) { CardPanel p = new CardPanel("Panel " + String.valueOf(i)); combo.addItem(p); cards.add(p, p.toString()); } JPanel control = new JPanel(); combo.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JComboBox jcb = (JComboBox) e.getSource(); CardLayout cl = (CardLayout) cards.getLayout(); cl.show(cards, jcb.getSelectedItem().toString()); } }); control.add(combo); f.add(cards, BorderLayout.CENTER); f.add(control, BorderLayout.SOUTH); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } }</code>
Explication :
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!