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

在对话框中,如果选中了某个组合,则需要显示一组控件,否则显示另一组控件。即我需要2层,并且当组合被选中/未选中时,我需要在它们之间切换。我怎样才能做到这一点?

回答:

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://stackoverflow.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);

}

}

以上是 Java如何根据组合框选择更改UI 的全部内容, 来源链接: utcz.com/qa/414143.html

回到顶部