a dire la verità, non serve togliere la combobox dal frame... ho un esempio bislacco qui:
codice:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class comboOnCombo extends JFrame implements ActionListener {
JComboBox uno, due;
String[] unoS = {"________", "Frutta", "Verdura", "Carne", "Pesce"};
String[] due1S = {"Mela", "Pera", "Banana"};
String[] due2S = {"Radicchio", "Carota", "Patata", "Peperone"};
String[] due3S = {"Maiale", "Manzo", "Pollo"};
String[] due4S = {"Cernia", "Orata", "Branzino", "Sarago"};
String[][] dueS = {due1S, due2S, due3S, due4S};
public void actionPerformed (ActionEvent ae) {
int i = ((JComboBox)ae.getSource()).getSelectedIndex();
if (i != 0) {
due.removeAllItems();
String[] data = dueS[i-1];
for (int j= 0; j < data.length; j++) {
due.addItem(data[j]);
}
}
else {
due.removeAllItems();
}
this.validate();
}
public comboOnCombo() {
super("Esperimenti con le ComboBox");
this.getContentPane().setLayout(new GridLayout(1,2));
uno = new JComboBox(unoS);
due = new JComboBox();
uno.addActionListener(this);
this.getContentPane().add(uno);
this.getContentPane().add(due);
this.setSize(300, 60);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main (String[] args) {
comboOnCombo coc = new comboOnCombo();
}
}
Chiaramente, con il remove dal contenitore (e il successivo reinserimento) puoi utilizzare il costruttore (e te ne esci senza il ciclo for)... ma devi andare a ripiazzare al posto giusto la combo... c'è sempre il rovescio della medaglia.