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