如何根據組合框選擇動態變更UI 元素
在圖形使用者介面(GUI) 中,通常需要顯示不同的集合控制項的數量取決於組合框中所做的選擇。本文探討如何使用 Java 的 CardLayout 來實現此效果。
問題定義:
在對話方塊視窗中,當特定組合時,需要顯示一組控制方塊項目被選取時,未選取時是一組不同的控件。本質上,您希望根據組合框選擇在兩個不同層的控制項之間切換。
CardLayout 實作:
CardLayout 是一個 JPanel 佈局管理器,允許多個面板堆疊在一起,一次只能看到一個面板。這使得它非常適合在不同的 UI 元素之間切換以回應外部事件。
程式碼片段:
以下Java 程式碼示範如何使用CardLayout 變更UI 元素基於組合方塊選擇:
<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>
說明:
以上是如何使用Java的CardLayout根據ComboBox選擇動態切換UI元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!