J'essaie de combiner 2 jcombobox. 1 combobox est pour montrer la catégorie des dépenses. et deuxième combobox lit le fichier du fichier texte pour montrer les types de produits. Si je change de première combobox je voudrais que la seconde combobox change en fonction de ce que l'utilisateur sélectionne dans le premier.JCombobox changer un autre JCombobox
Est-il possible que je puisse toujours charger l'autre liste déroulante à partir de fichiers texte? Les sous-éléments ne seraient pas des tableaux mais les mêmes que précédemment, car ils se trouvent en bas du code de cboperson.
Code modifié:
private JComboBox cboCategory;
private JComboBox cboPerson;
private JComboBox cboItem;
public String itemChange = "groceries.txt";
public ExpenditureTracker() {......
String[] items = {"Select Item", "Groceries", "Bills", "Travelling", "Leasure", "Other"};
mainComboBox = new JComboBox(items);
mainComboBox.addActionListener(this);
mainComboBox.addItemListener(this);
//prevent action events from being fired when the up/down arrow keys are used
//mainComboBox.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE);
mainComboBox.setBounds(113, 138, 85, 20);
importPanel.add(mainComboBox);
subComboBox = new JComboBox();// Create sub combo box with multiple models
subComboBox.setPrototypeDisplayValue("XXXXXXXXXX"); // JDK1.4
subComboBox.addItemListener(this);
subComboBox.setBounds(113, 188, 85, 20);
importPanel.add(subComboBox);
String[] subItems1 = {"Select Color", "Red", "Blue", "Green"};
subItems.put(items[1], subItems1);
String[] subItems2 = {"Select Shape", "Circle", "Square", "Triangle"};
subItems.put(items[2], subItems2);
String[] subItems3 = {"Select Fruit", "Apple", "Orange", "Banana"};
subItems.put(items[3], subItems3);
String[] subItems4 = {"Select Fruit", "Apple", "Orange", "Banana"};
subItems.put(items[4], subItems3);
String[] subItems5 = {"Select Fruit", "Apple", "Orange", "Banana"};
subItems.put(items[5], subItems3);
loadDataTocboPerson();
}
private void loadDataToCboPerson() {
Scanner fileReader = new Scanner(getClass().getResourceAsStream(
itemChange));
try {
DefaultComboBoxModel model = new DefaultComboBoxModel();
while (fileReader.hasNextLine()) {
model.addElement(fileReader.nextLine());
}
cboItem.setModel(model);
} finally {
fileReader.close();
}
}
appelez-vous loadDataToCboItem()? Vous devriez l'appeler soit à partir de votre méthode actionPerformed soit dans la méthode displaySelectedItem(). –
S'il vous plaît modifier votre réponse plus. Le code est mal formaté et il n'est pas clair à quelle combobox les méthodes appartiennent. – toto2