ダイアログでは、いくつかのコンボがチェックされている場合はコントロールのグループを1つ表示し、それ以外の場合はコントロールのグループを表示する必要があります。 I.私は2つのレイヤーが必要なので、コンボがチェックされているかチェックされていないときに切り替える必要があります。どうやってやるの?以下の提案として、このためにうまく機能CardLayout
コンボボックスの選択に応じてUIを変更する方法
おかげ
ダイアログでは、いくつかのコンボがチェックされている場合はコントロールのグループを1つ表示し、それ以外の場合はコントロールのグループを表示する必要があります。 I.私は2つのレイヤーが必要なので、コンボがチェックされているかチェックされていないときに切り替える必要があります。どうやってやるの?以下の提案として、このためにうまく機能CardLayout
コンボボックスの選択に応じてUIを変更する方法
おかげ
。
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);
}
}
JComboBox + CardLayout +1 – mKorbel
この関連[example](http://stackoverflow.com/questions/5654926/implementing-back-forward-buttons-in-swing/5655843#5655843)も参照してください。 – trashgod
この例では、名前を追加するために 'JPanel'を拡張しますが、[' Component'](http://download.oracle.com/javase/6/docs/api/java/awt/Component.html)には 'getName() 'と' setName() 'メソッドを使用することもできます。 – trashgod
何のプラットフォームと言語? –