Gemeinsame Daten zwischen zwei Comboboxen

Ich muss Daten zwischen zwei (oder mehr) Comboboxen austauschen, möchte aber Elemente unabhängig voneinander auswählen. Wenn ich beispielsweise in der ersten ComboBox Object1 auswähle, wählt meine zweite ComboBox auch Object1 aus, da sie dasselbe Modell haben (DefaultComboBoxModel und dieses Modell verwaltet auch ausgewählte Objekte). Aber ich will dieses Verhalten nicht. Ich möchte selbständig Objekte in meinen ComboBoxen auswählen. Wenn ich ein Objekt in der ersten ComboBox auswähle, sollte sich meine zweite ComboBox nicht ändern.

In diesem Moment denke ich über Supermodel für zwei Modelle nach. Supermodel sendet Ereignisse an Untermodelle und aktualisiert die Combobox-Daten, jedoch nicht den Status. Aber ich denke, das ist nicht der beste Weg.

Gibt es interessantere und einfachere Ansätze?

Hier ist der Kurzcode, um zu verstehen, was ich meine:

package hello;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JComboBox;
public class Comboboxes extends JFrame
{
private JPanel contentPane;
public static void main(String[] args)
{
    EventQueue.invokeLater(new Runnable()
    {
        public void run()
        {
            try
            {
                Comboboxes frame = new Comboboxes();
                frame.setVisible(true);
            }
            catch (Exception e)
            {
                e.printStackTrace();
            }
        }
    });
}

public Comboboxes()
{
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    contentPane.setLayout(null);

    JComboBox one = new JComboBox();
    one.setBounds(10, 11, 414, 26);
    contentPane.add(one);

    JComboBox two = new JComboBox();
    two.setBounds(10, 52, 414, 26);
    contentPane.add(two);

    DefaultComboBoxModel<String> model = new DefaultComboBoxModel<String>();
    model.addElement("Item 1");
    model.addElement("Item 2");
    model.addElement("Item 3");

    one.setModel(model);
    two.setModel(model);
}
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage