Rumah > Java > javaTutorial > Bagaimana untuk Mencipta JComboBoxes Dinamik dengan Pilihan Bergantung di Java?

Bagaimana untuk Mencipta JComboBoxes Dinamik dengan Pilihan Bergantung di Java?

Linda Hamilton
Lepaskan: 2024-12-24 06:47:22
asal
462 orang telah melayarinya

How to Create Dynamic JComboBoxes with Dependent Selections in Java?

JComboBoxes Dinamik: Mengisi ComboBox Bergantung berdasarkan Pemilihan

Pengenalan

Matlamatnya adalah untuk buat dua JComboBoxes dinamik di mana senarai pilihan dalam satu berubah bergantung pada item yang dipilih dalam yang lain. Ini berguna apabila mewakili data hierarki, seperti kursus dan mata pelajaran.

Penyelesaian

Untuk melaksanakan fungsi ini, ikut langkah berikut:

  1. Buat DefaultComboBoxModel untuk Setiap Set:

    Buat DefaultComboBoxModels berasingan untuk setiap set pilihan, seperti kursus dan subjek. Contohnya:

    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"});
    Salin selepas log masuk
  2. Tetapkan Model Permulaan untuk JComboBox2:

    Tetapkan ComboBoxModel awal untuk JComboBox2 kepada set pilihan pertama ( dalam kes ini, subjek dari Kursus 1).

    combo2.setModel(subjectsModel1);
    Salin selepas log masuk
  3. Kendalikan Acara Pemilihan dalam JComboBox1:

    Tambahkan ActionListener pada JComboBox1 untuk memantau perubahan pilihan. Apabila pengguna memilih kursus, kemas kini ComboBoxModel JComboBox2 dengan subjek yang sepadan untuk kursus tersebut.

    combo1.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            int i = combo1.getSelectedIndex();
            combo2.setModel(subjectsModels[i]);
        }
    });
    Salin selepas log masuk

Contoh Pelaksanaan

The coretan kod berikut menunjukkan pelaksanaan penyelesaian:

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);
    }
}
Salin selepas log masuk

Kesimpulan

Dengan memanfaatkan DefaultComboBoxModels dan pengendalian acara, penyelesaian ini membolehkan populasi dinamik JComboBoxes berdasarkan pemilihan dalam JComboBox yang lain. Teknik ini amat berguna dalam situasi di mana data disusun secara hierarki dan perlu diwakili dalam antara muka yang mesra pengguna.

Atas ialah kandungan terperinci Bagaimana untuk Mencipta JComboBoxes Dinamik dengan Pilihan Bergantung di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan