ホームページ  >  記事  >  Java  >  Java の CardLayout を使用して ComboBox の選択に基づいて UI 要素を動的に切り替える方法

Java の CardLayout を使用して ComboBox の選択に基づいて UI 要素を動的に切り替える方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-03 10:46:29206ブラウズ

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

ComboBox の選択に基づいて UI 要素を動的に変更する方法

グラフィカル ユーザー インターフェイス (GUI) では、多くの場合、異なるセットを表示する必要があります。コンボ ボックスでの選択に応じてコントロールの数が決まります。この記事では、Java の CardLayout を使用してこの効果を実現する方法について説明します。

問題定義:

ダイアログ ウィンドウで、特定のコンボを実行するときに 1 つのコントロール グループを表示する必要があります。ボックス項目が選択されている場合、選択されていない場合は別のコントロールのグループが表示されます。基本的に、コンボ ボックスの選択に基づいて 2 つの異なるコントロール レイヤーを切り替える必要があります。

CardLayout 実装:

CardLayout は、複数のパネルを使用できる JPanel レイアウト マネージャーです。パネルは一度に 1 つだけ表示され、互いの上に積み重ねられます。これにより、外部イベントに応じて異なる 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>

説明:

  • CardPanel クラスは、CardLayout 内に表示される個々のパネルを表します。
  • main メソッドは JFrame を作成し、CardLayout パネルを中央に追加し、コンボ ボックスを含むコントロール パネルを南に追加します。
  • コンボ ボックス内の項目が選択されると、そのアイテムの ActionListenerコンボ ボックスは、選択されたパネルを取得し、CardLayout の show メソッドを使用して表示します。
  • このコードは、コンボ ボックスの選択に基づいて表示される UI 要素を動的に変更するため、階層化されたコントロールを簡単に作成できます。

以上がJava の CardLayout を使用して ComboBox の選択に基づいて UI 要素を動的に切り替える方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。