콤보박스 선택에 따라 UI 요소를 동적으로 변경하는 방법
그래픽 사용자 인터페이스(GUI)에서는 서로 다른 세트를 표시해야 하는 경우가 많습니다. 콤보 상자에서 선택한 항목에 따라 컨트롤이 달라집니다. 이 문서에서는 Java의 CardLayout을 사용하여 이 효과를 얻는 방법을 살펴봅니다.
문제 정의:
대화 상자 창에서 특정 콤보가 실행될 때 하나의 컨트롤 그룹을 표시해야 합니다. 상자 항목이 선택되어 있고 선택되지 않은 경우 다른 컨트롤 그룹이 표시됩니다. 기본적으로 콤보 상자 선택에 따라 서로 다른 두 개의 컨트롤 레이어 간에 전환하려고 합니다.
CardLayout 구현:
CardLayout은 여러 패널을 허용하는 JPanel 레이아웃 관리자입니다. 한 번에 하나의 패널만 보이도록 서로의 위에 쌓입니다. 이는 외부 이벤트에 대한 응답으로 다양한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!