動態JComboBox:根據選擇填充依賴組合框
簡介
目標是建立兩>簡介
目標是建立兩個動態JComboBox,其中一個中的選項清單會根據所選內容而變化另一項中的項目。這在表示分層資料(例如課程和科目)時非常有用。
解決方案
為每個創建一個DefaultComboBoxModel設定:
DefaultComboBoxModel coursesModel = new DefaultComboBoxModel(new String[] {"Course 1", "Course 2", "Course 3"}); DefaultComboBoxModel subjectsModel1 = new DefaultComboBoxModel(new String[] {"A1", "A2"}); DefaultComboBoxModel subjectsModel2 = new DefaultComboBoxModel(new String[] {"B1", "B2", "B3", "B4"});
設定 JComboBox2 的初始模型:
combo2.setModel(subjectsModel1);
處理JComboBox1中的選擇事件:
combo1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { int i = combo1.getSelectedIndex(); combo2.setModel(subjectsModels[i]); } });
範例實作
import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class DynamicCombos extends JPanel { public DynamicCombos() { ComboBoxModel[] models = new ComboBoxModel[3]; models[0] = new DefaultComboBoxModel(new String[] {"Course 1", "Course 2", "Course 3"}); models[1] = new DefaultComboBoxModel(new String[] {"A1", "A2"}); models[2] = new DefaultComboBoxModel(new String[] {"B1", "B2", "B3", "B4"}); JComboBox combo1 = new JComboBox(models[0]); JComboBox combo2 = new JComboBox(models[1]); combo1.addActionListener(e -> combo2.setModel(models[combo1.getSelectedIndex()])); add(combo1); add(combo2); } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new DynamicCombos()); frame.pack(); frame.setVisible(true); } }
下面的程式碼片段示範了解:
下面的程式碼片段示範了解:結論透過利用DefaultComboBoxModels和事件處理,此解決方案允許基於另一個 JComboBox 中的選擇動態填充 JComboBox。這種技術在資料按層次結構組織並且需要在使用者友好的介面中表示的情況下特別有用。以上是如何在 Java 中建立具有相關選擇的動態 JComboBox?的詳細內容。更多資訊請關注PHP中文網其他相關文章!