Dynamically Switch UI Elements Based on Combo Box Selection
In a dialog box, you need to display specific sets of controls based on the selection made in a combo box. This is achieved by using multiple layers and switching between them when the combo box is checked or unchecked.
CardLayout for Control Layering
The CardLayout is an effective solution for this scenario. It allows you to have multiple panels, referred to as "cards," and display only one at a time by changing the layout.
The following code snippet demonstrates how to implement this:
<code class="java">import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.*; public class CardBoxExample { private static final CardLayout cardLayout = new CardLayout(); private static final JPanel cards = new JPanel(cardLayout); private static final JComboBox<String> combo = new JComboBox<>(); public static void main(String[] args) { // Create the cards JPanel panel1 = new JPanel(); panel1.setBackground(Color.RED); JPanel panel2 = new JPanel(); panel2.setBackground(Color.GREEN); cards.add(panel1, "Panel 1"); cards.add(panel2, "Panel 2"); // Add the combo box JPanel control = new JPanel(); combo.addItem("Panel 1"); combo.addItem("Panel 2"); combo.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cardLayout.show(cards, combo.getSelectedItem().toString()); } }); control.add(combo); // Create the frame and add the components JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.add(cards, BorderLayout.CENTER); frame.add(control, BorderLayout.SOUTH); frame.pack(); frame.setVisible(true); } }</code>
When the combo box selection changes, the ActionListener updates the layout of the cards panel to display the selected card. This allows you to seamlessly transition between different groups of controls based on user input.
The above is the detailed content of How to Dynamically Switch UI Elements Based on Combo Box Selection?. For more information, please follow other related articles on the PHP Chinese website!