Итак, вы хотите начать использовать пользовательский объект для хранения связанных данных.
Итак, вы бы начали с создания Currency
объекта с 3 свойствами:
- Имя
- Оценить
- Символ
Что-то вроде:
public class Currency
{
private String name;
private double rate;
private String symbol;
public Currency (String name, double rate, String symbol)
{
this.name = name;
this.rate = rate;
this.symbol = symbol;
}
// add getter methods here
@Override
public String toString()
{
return name;
}
}
Затем вам нужно добавить методы получения, getName (), getRate ()и getSymbol (), чтобы вы могли получить доступ к данным из объекта.
Теперь вы можете добавить «жестко запрограммированные» объекты валюты в ваше поле со следующим кодом:
//comboSelect = new JComboBox<String>(conversionList);
comboSelect = new JComboBox<Currency>();
comboSelect.addItem( new Currency("Euro (EUR)", 1.23, "€") );
comboSelect.addItem( new Currency("US Dollar (USD), 1.23, "$") );
...
По умолчаниюсредство визуализации для поля со списком вызовет метод toString()
вашего объекта Currency для текста, отображаемого в поле со списком.
Теперь код ActionListener
для вашего поля со списком значительно упрощен:
Currency currency = (Currency)comboSelect.getSelectedItem();
factor = currency.getRate();
symbol = currency.getSymbol();
Нет необходимости в операторе switch.
В вашем текущем проекте у вас есть жесткий код имен в массиве, а символ скорости / символа жестко закодирован в ActionListener.С этим дизайном у вас есть все данные вместе в простой объект.
Итак, сначала приведите эту базовую логику в работу с жестко закодированными объектами Currency.
Затем, когда вы будете готовы создавать объекты динамической валюты, ваш цикл будет выглядеть примерно так:
while ((line = br.readLine()) != null)
{
String[] values = line.split(",");
double rate = Double.parseDouble( values[1] );
Currency currency = new Currency(values[0], rate, values[2]);
comboSelect.addItem( currency);
//br.close(); you only close the file after reading all the lines of data
}
br.close();
Примечание: на самом деле не рекомендуется использовать метод toString () для отображения текста в поле со списком.Вместо этого вы должны использовать пользовательский рендер.После того как приведенные выше предложения сработают, вы можете проверить: Поле со списком с пользовательским рендерером для получения дополнительной информации по этой теме.