首頁 >Java >java教程 >如何在 Java 中建立具有相關選擇的動態 JComboBox?

如何在 Java 中建立具有相關選擇的動態 JComboBox?

Linda Hamilton
Linda Hamilton原創
2024-12-24 06:47:22460瀏覽

How to Create Dynamic JComboBoxes with Dependent Selections in Java?

動態JComboBox:根據選擇填充依賴組合框

簡介

目標是建立兩>簡介

目標是建立兩個動態JComboBox,其中一個中的選項清單會根據所選內容而變化另一項中的項目。這在表示分層資料(例如課程和科目)時非常有用。

解決方案

  1. 要實現此功能,請按照以下步驟操作:

    為每個創建一個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"});
  2. 為每組選項(例如課程和科目)建立單獨的 DefaultComboBoxModel。例如:
  3. 設定 JComboBox2 的初始模型:

    combo2.setModel(subjectsModel1);
  4. 將 JComboBox2 的初始 ComboBoxModel 設定為第一組選項(在這種情況下,課程中的科目1).
  5. 處理JComboBox1中的選擇事件:

    combo1.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            int i = combo1.getSelectedIndex();
            combo2.setModel(subjectsModels[i]);
        }
    });
  6. 為JComboBox1新增一個ActionListener來監聽選擇的變化。當使用者選擇課程時,使用該課程的相應科目更新 JComboBox2 的 ComboBoxModel。

範例實作

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn