Due Combobox che dipendono da un'altra Combobox

di il
2 risposte

Due Combobox che dipendono da un'altra Combobox

Ciao a tutti non ho trovato la sezione del forum per presentarmi e ne approfitto per farlo qui.
Sono un giovane studioso di Java da autodidatta e mi sono imbattuto in questo problema.

Ho una ComboBox (1) che mi fa scegliere il sesso (maschio o femmina) e ho altre due ComboBox (2 e 3) nelle quali ci vanno i nomi maschili o femminili a secondo di cosa scelto prima.
Le due seconde ComboBox (2 e 3) devono avere lo stesso elenco da cui attingere, ma devono essere indipendenti tra di loro. Quindi se scelgo "Maschi" nella prima ComboBox (1), nelle altre due avrò lo stesso elenco con gli stessi nomi.
Il mio problema è appunto renderle indipendenti. Ora come ora quando seleziono un nome mi viene cambiato anche nell'altra ComboBox (2 o 3).
package comboboxdemo;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JavaApplication55 extends JPanel implements ActionListener { 
    
    private final JComboBox sesso= new JComboBox(new String[]{"Maschi", "Femmine"});
    private final JComboBox listaMaschi = new JComboBox();
    private final JComboBox listaFemmine = new JComboBox();
    private ComboBoxModel[] models = new ComboBoxModel[2];
    
    public JavaApplication55() {
        models[0] = new DefaultComboBoxModel(new String[]{"Mauro", "Claudio", "Massimo", "Luca"});
        models[1] = new DefaultComboBoxModel(new String[]{"Laura", "Chiara", "Stefania", "Sara"});
        
        listaMaschi.setModel(models[0]);
        listaFemmine.setModel(models[0]);
        this.add(sesso);
        this.add(listaMaschi);
        this.add(listaFemmine);
        sesso.addActionListener(this);
        
    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        int i = sesso.getSelectedIndex();
        listaMaschi.setModel(models[i]);
        listaFemmine.setModel(models[i]);
        
    }
  
    private static void createAndShowGUI() {
        
        JFrame frame = new JFrame("Demo program for JFrame");
        frame.setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);                  
        frame.setSize(600, 400);                
        frame.setLocationRelativeTo(null);
        frame.setVisible(true);
                      
        JComponent newContentPane = new JavaApplication55();
        newContentPane.setOpaque(true); //content panes must be opaque
        frame.add(newContentPane);

        frame.pack();
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
    
}
Come faccio a rendere indipendenti tra loro le due seconde ComboBox?
E se volessi stampare in una label i nomi che ho scelto basterebbe aggiungere due listener ad entrambe le due ComboBox?
Posso caricare da file i nomi anzichè passarli come faccio ora?

grazie in anticipo per le risposte!

2 Risposte

  • Re: Due Combobox che dipendono da un'altra Combobox

    Spazzacamino ha scritto:


    Ora come ora quando seleziono un nome mi viene cambiato anche nell'altra ComboBox (2 o 3).
    Questo succede perché ai due combobox assegni lo stesso identico oggetto DefaultComboBoxModel e pertanto le combo si sincronizzano tra di loro non solo come dati ma anche come comportamento.

    Semplicemente servono due oggetti DefaultComboBoxModel distinti.
  • Re: Due Combobox che dipendono da un'altra Combobox

    Risolto grazie!
Devi accedere o registrarti per scrivere nel forum
2 risposte