How to Swap UI Content Based on Combo Box Selection
When designing application interfaces, it's common to present different sets of controls based on user interactions. One way to achieve this flexibility is through the use of combo boxes. This question addresses the scenario of switching between two layers of controls based on a combo box selection.
Solution Using CardLayout
The Java CardLayout class provides a convenient solution for managing layers of controls. This class allows for multiple panels to be added to a container, and only one panel is visible at a time. The visible panel can be selected dynamically using the show() method.
The code snippet below demonstrates how to implement a CardLayout to swap UI content based on combo box selection:
<code class="java">import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class CardPanelExample { public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Create two panels to be swapped JPanel panel1 = new JPanel(); panel1.setBackground(Color.CYAN); JPanel panel2 = new JPanel(); panel2.setBackground(Color.ORANGE); // Create a CardLayout and add the panels CardLayout cardLayout = new CardLayout(); JPanel cardPanel = new JPanel(cardLayout); cardPanel.add(panel1, "Panel1"); cardPanel.add(panel2, "Panel2"); // Create a combo box and add items JComboBox<String> comboBox = new JComboBox<>(); comboBox.addItem("Panel1"); comboBox.addItem("Panel2"); // Add an action listener to the combo box comboBox.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { cardLayout.show(cardPanel, comboBox.getSelectedItem().toString()); } }); // Add the card panel and combo box to the frame frame.add(cardPanel, BorderLayout.CENTER); frame.add(comboBox, BorderLayout.SOUTH); frame.setSize(400, 300); frame.setVisible(true); } }</code>
In this example, the CardLayout manages two panels, panel1 and panel2. When an item is selected from the combo box, the corresponding panel is displayed in the CardLayout container. This approach allows for a dynamic and intuitive interface where different sets of controls can be presented to the user based on their selection.
The above is the detailed content of How can I dynamically swap UI content based on a combo box selection using CardLayout in Java?. For more information, please follow other related articles on the PHP Chinese website!