JComboBoxes Dinâmicos

Eu tenho os seguintes dados (String):

Course1: A1 Course1: A2 Course2: B1 Course2: B2 Course2: B3 Course2: B4 Course3: C1 Course3: C2 

Eu gostaria de criar dois JComboBox (JComboBox1, JComboBox2) para que JComboBox1 contenha Course1, Course2, Course3, etc.

Se eu selecionar, digamos, Course2 de JComboBox1, então os correspondentes B1, B2, B3, B4 devem ser preenchidos em JComboBox2.

Como implementar isso? Muito Obrigado.

Sim, simplesmente crie um DefaultComboBoxModel para cada conjunto e faça setModel() no JComboBox2 quando o JComboBox1 mudar.

Adendo: por exemplo,

 import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; import javax.swing.JComboBox; import javax.swing.JFrame; import javax.swing.JPanel; public class ComboTest extends JPanel implements ActionListener, Runnable { private final JComboBox combo1 = new JComboBox( new String[]{"Course 1", "Course 2", "Course 3"}); private final JComboBox combo2 = new JComboBox(); private ComboBoxModel[] models = new ComboBoxModel[3]; public ComboTest() { models[0] = new DefaultComboBoxModel( new String[]{"A1", "A2"}); models[1] = new DefaultComboBoxModel( new String[]{"B1", "B2", "B3", "B4"}); models[2] = new DefaultComboBoxModel( new String[]{"C1", "C2"}); combo2.setModel(models[0]); this.add(combo1); this.add(combo2); combo1.addActionListener(this); } @Override public void actionPerformed(ActionEvent e) { int i = combo1.getSelectedIndex(); combo2.setModel(models[i]); } @Override public void run() { JFrame f = new JFrame("ComboTest"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.add(this); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new ComboTest()); } } 

Sim. Você pode adicionar um listener de evento de alteração ao primeiro JComboBox que atualiza os valores do segundo JComboBox.

Algo assim

 // first comboBox final JComboBox courseBox = new JComboBox( new String[]{"Course 1", "Course 2", "Course 3"}); final JComboBox box2 = new JComboBox(); // Now listen for changes courseBox.addActionListener(new ActionListener(){ void actionPerformed(ActionEvent e){ if(courseBox.getSelectedItem().equals("Course 1")){ // we know that the user picked "Course 1", now change box2 to match // first clear everything box2.removeAllItems(); // now add back relevant values box2.addItem("A1"); box2.addItem("A2"); }else if(...){ // ... } } });