java – 如何根据组合框选择更改UI

前端之家收集整理的这篇文章主要介绍了java – 如何根据组合框选择更改UI前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在对话框中,如果选中某个组合,则需要显示一组控件,否则显示另一组控件.
即我需要2层,我需要在选中/取消选中组合时在它们之间切换.我怎样才能做到这一点?

谢谢

解决方法

CardLayout适用于此,如下所示.
  1. import java.awt.BorderLayout;
  2. import java.awt.CardLayout;
  3. import java.awt.Color;
  4. import java.awt.Dimension;
  5. import java.awt.EventQueue;
  6. import java.awt.event.ActionEvent;
  7. import java.awt.event.ActionListener;
  8. import java.util.Random;
  9. import javax.swing.JComboBox;
  10. import javax.swing.JFrame;
  11. import javax.swing.JLabel;
  12. import javax.swing.JPanel;
  13.  
  14. /** @see https://stackoverflow.com/questions/6432170 */
  15. public class CardPanel extends JPanel {
  16.  
  17. private static final Random random = new Random();
  18. private static final JPanel cards = new JPanel(new CardLayout());
  19. private static final JComboBox combo = new JComboBox();
  20. private final String name;
  21.  
  22. public CardPanel(String name) {
  23. this.name = name;
  24. this.setPreferredSize(new Dimension(320,240));
  25. this.setBackground(new Color(random.nextInt()));
  26. this.add(new JLabel(name));
  27. }
  28.  
  29. @Override
  30. public String toString() {
  31. return name;
  32. }
  33.  
  34. public static void main(String[] args) {
  35. EventQueue.invokeLater(new Runnable() {
  36.  
  37. @Override
  38. public void run() {
  39. create();
  40. }
  41. });
  42. }
  43.  
  44. private static void create() {
  45. JFrame f = new JFrame();
  46. f.setDefaultCloSEOperation(JFrame.EXIT_ON_CLOSE);
  47. for (int i = 1; i < 9; i++) {
  48. CardPanel p = new CardPanel("Panel " + String.valueOf(i));
  49. combo.addItem(p);
  50. cards.add(p,p.toString());
  51. }
  52. JPanel control = new JPanel();
  53. combo.addActionListener(new ActionListener() {
  54.  
  55. @Override
  56. public void actionPerformed(ActionEvent e) {
  57. JComboBox jcb = (JComboBox) e.getSource();
  58. CardLayout cl = (CardLayout) cards.getLayout();
  59. cl.show(cards,jcb.getSelectedItem().toString());
  60. }
  61. });
  62. control.add(combo);
  63. f.add(cards,BorderLayout.CENTER);
  64. f.add(control,BorderLayout.SOUTH);
  65. f.pack();
  66. f.setLocationRelativeTo(null);
  67. f.setVisible(true);
  68. }
  69. }

猜你在找的Java相关文章