P
Patt1502
Gast
Java:
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Main extends JPanel {
private static final long serialVersionUID = 1L;
String SIGNAL = "Signal";
private List<JComboBox<ComboColor>> comboList = new ArrayList<>();
public Main() {
setLayout(new GridLayout(0, 1));
DefaultComboBoxModel<ComboColor> cModel = new DefaultComboBoxModel<>(ComboColor.values());
JComboBox<ComboColor> combo = new JComboBox<>(cModel);
JComboBox<ComboColor> combo2 = new JComboBox<>(cModel);
add(createComboLabelPanel(1, combo));
comboList.add(combo);
add(createComboLabelPanel(2, combo2));
comboList.add(combo2);
}
private JPanel createComboLabelPanel(int index, JComboBox<ComboColor> combo) {
JPanel panel = new JPanel();
JLabel label = new JLabel(SIGNAL + " " + index);
label.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
label.setOpaque(true);
combo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
ComboColor cColor = (ComboColor) combo.getSelectedItem();
label.setBackground(cColor.getColor());
}
});
panel.add(label);
panel.add(combo);
return panel;
}
public static void main(String[] args) {
Main mainPanel = new Main();
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().add(mainPanel);
f.pack();
f.setLocationByPlatform(true);
f.setVisible(true);
}
}
enum ComboColor {
RED("Red", Color.RED), GREEN("Green", Color.GREEN), BLUE("Blue", Color.BLUE);
private String text;
private Color color;
public String getText() {
return text;
}
public Color getColor() {
return color;
}
private ComboColor(String text, Color color) {
this.text = text;
this.color = color;
}
@Override
public String toString() {
return text;
}
}
Das ist ein kleines Programm weitesgehend aus dem Internet, von dem ich aber Teile in meinem Programm benutzen möchte. Hier werden jeweils 2 ComboBoxen mit dem Enum ComboColor gefüllt, wenn ich das Programm dann laufen lasse, ändern sich aber beide Werte, wenn ich nur einen der beiden ändere. D.h, wenn ich in der ersten ComboBox green auswähle, steht in der zweiten dann auch green. Ich habe lange überlegt, aber ich versteh einfach nicht wieso sich beide Werte gleichzeitig ändern.
Danke im Vorraus