Rumah  >  Artikel  >  Java  >  Bagaimana Menukar Elemen UI Secara Dinamik Berdasarkan Pemilihan ComboBox Menggunakan CardLayout Java?

Bagaimana Menukar Elemen UI Secara Dinamik Berdasarkan Pemilihan ComboBox Menggunakan CardLayout Java?

Linda Hamilton
Linda Hamiltonasal
2024-11-03 10:46:29204semak imbas

How to Dynamically Switch UI Elements Based on ComboBox Selection Using Java's CardLayout?

Cara Mengubah Elemen UI Secara Dinamik Berdasarkan Pemilihan ComboBox

Dalam antara muka pengguna grafik (GUI), selalunya perlu memaparkan set yang berbeza kawalan bergantung pada pemilihan yang dibuat dalam kotak kombo. Artikel ini meneroka cara untuk mencapai kesan ini menggunakan CardLayout Java.

Definisi Masalah:

Dalam tetingkap dialog, anda perlu menunjukkan satu kumpulan kawalan apabila kombo tertentu item kotak dipilih dan kumpulan kawalan yang berbeza apabila ia tidak dipilih. Pada asasnya, anda ingin menukar antara dua lapisan kawalan berbeza berdasarkan pemilihan kotak kombo.

Pelaksanaan Tata Letak Kad:

CardLayout ialah pengurus reka letak JPanel yang membenarkan berbilang panel untuk disusun di atas satu sama lain, dengan hanya satu panel kelihatan pada satu masa. Ini menjadikannya sesuai untuk bertukar antara elemen UI yang berbeza sebagai tindak balas kepada acara luaran.

Coretan Kod:

Kod Java berikut menunjukkan cara menggunakan CardLayout untuk menukar elemen UI berdasarkan pemilihan kotak kombo:

<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>

Penjelasan:

  • Kelas CardPanel mewakili panel individu yang akan dipaparkan dalam CardLayout.
  • Kaedah utama mencipta JFrame, menambah panel CardLayout ke tengah dan menambah panel kawalan yang mengandungi kotak kombo ke selatan.
  • Apabila item dalam kotak kombo dipilih, ActionListener untuk kotak kombo mendapatkan semula panel yang dipilih dan menggunakan kaedah persembahan CardLayout untuk menjadikannya kelihatan.
  • Kod secara dinamik menukar elemen UI yang boleh dilihat berdasarkan pemilihan kotak kombo, membolehkan anda membuat kawalan berlapis dengan mudah.

Atas ialah kandungan terperinci Bagaimana Menukar Elemen UI Secara Dinamik Berdasarkan Pemilihan ComboBox Menggunakan CardLayout Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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