如何根据组合框选择更改 UI
Posted
技术标签:
【中文标题】如何根据组合框选择更改 UI【英文标题】:how to change UI depending on combo box selection 【发布时间】:2011-09-19 21:41:15 【问题描述】:如果选中某些组合,我需要在对话框中显示一组控件,否则显示另一组控件。 IE。我需要 2 层,当组合被选中/取消选中时,我需要在它们之间切换。我该怎么做?
谢谢
【问题讨论】:
【参考方案1】:CardLayout
可以很好地解决这个问题,如下所示。
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;
/** @see http://***.com/questions/6432170 */
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);
【讨论】:
另见此相关example。 本示例扩展JPanel
以添加名称,但 Component
具有 getName()
和 setName()
方法作为替代。
我所看到的,恭喜,+++第二位真正的摇摆大师+++,gooood
@nIcEcOw:感谢您的评论;我也一直在试验Color.getHSBColor
,对于example。
setPreferredSize()
仅用于演示目的。以上是关于如何根据组合框选择更改 UI的主要内容,如果未能解决你的问题,请参考以下文章