Ich habe Combobox, die mit einigen Elementen gefüllt ist. Jedes Element hat Anzeigeelement und Wert Mitglied:JCombobox Display Text nach Wert
Vector model = new Vector();
model.addElement(new FilterValue("10000 Hz", 0));
model.addElement(new FilterValue("5000 Hz", 1));
model.addElement(new FilterValue("1000 Hz", 5));
model.addElement(new FilterValue("100 Hz", 50));
model.addElement(new FilterValue("10 Hz", 500));
model.addElement(new FilterValue("1 Hz", 5000));
public class FilterValue {
private final String label;
private final int value;
public FilterValue(String label, int value) {
this.label = label;
this.value = value;
}
public String getLabel() {
return label;
}
public int getValue() {
return value;
}
public String toString()
{
return label;
}
}
Initialisierung von JComboBox
cbFilter1 = new JComboBox(model);
cbFilter1.setBounds(176, 70, 90, 20);
cbFilter1.setSelectedIndex(-1);
pnlOUT1.add(cbFilter1);
cbFilter1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
JComboBox comboBox = (JComboBox)e.getSource();
FilterValue item = (FilterValue)comboBox.getSelectedItem();
System.out.println(item.getValue() + " : " + item.getLabel());
}
});
Wenn ich zum Beispiel 5000 Hz wählen, Anzeigetext ist 5000 Hz, und Wert ist 1.
Die Frage ist, wie man den Wert für Beispiel 5 einstellt und 1000 Hz anzeigt?
Ich habe versucht, mit
cbFilter1.setSelectedItem(5);
Aber es gibt keinen Effekt.
So sollte es sagen 1000Hz oder 5? Du widersprichst dir selbst. Benötigen Sie nur die executes – basic
Dies könnte erreicht werden durch Erstellen einer Methode, die die "FilterValue" -Member der Combo iteriert, wirft sie zurück zu einem 'FilterValue' und überprüft das' value' Attribut. –
'cbFilter1.setBounds (176, 70, 90, 20); 'Java GUIs müssen auf verschiedenen Betriebssystemen, Bildschirmgrößen, Bildschirmauflösungen usw. mit verschiedenen PLAFs in verschiedenen Locales arbeiten. Als solche sind sie nicht für ein perfektes Pixel-Layout geeignet. Verwenden Sie stattdessen Layout-Manager oder [Kombinationen davon] (http://stackoverflow.com/a/5630271/418556) zusammen mit Layout-Auffüllung und Rahmen für [Leerraum] (http://stackoverflow.com/a/17874718/ 418556). –