У меня есть combobox, который заполнен некоторыми элементами. Каждый элемент имеет элемент отображения и элемент значения:Текст сообщения JCombobox в соответствии со значением
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;
}
}
Инициализация 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());
}
});
Когда я выбираю, например, 5000 Гц, текстовый дисплей составляет 5000 Гц, а значение равно 1.
вопрос в том, как установить значение, например, 5 и отобразить 1000 Гц?
Я попытался с
cbFilter1.setSelectedItem(5);
Но нет никакого эффекта.
Так должен это сказать 1000HZ или 5? Вы противоречите себе. Просто нужны точные значения – basic
Этого можно достичь, создав метод, который выполняет итерацию членов 'FilterValue' комбо, отбрасывает их обратно в' FilterValue' и проверяет атрибут 'value'. –
'cbFilter1.setBounds (176, 70, 90, 20); «Java GUI должны работать с разными ОС, размером экрана, разрешением экрана и т. Д., Используя разные PLAF в разных локалях. Таким образом, они не способствуют идеальной компоновке пикселей. Вместо этого используйте диспетчеры макетов или [их комбинации] (http://stackoverflow.com/a/5630271/418556), а также макет и границы для [пробела] (http://stackoverflow.com/a/17874718/ 418556). –