Это часть более крупной программы, которую я делаю, где пользователь может создать объект Flight, введя данные в JTextFields. Данные хранятся в векторе, который называется flightList. На второй панели моего JApplet пользователь может использовать JComboBox - flightBox - для выбора одного из созданных им Полетов. Когда Flight выбран в JComboBox, необходимо вызвать метод getPrice () для выбранного объекта Flight и отобразить его в JLabel ниже.
private class ChoiceListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
//needs to be completed
if (flightBox.getSelectedIndex() == 0)
{
//flightBox.getSelectedItem(); // returns selected object
outro.setText("The price for your flight is:");
int p = flightBox.getSelectedIndex();
Flight selectedFlight = flightList.get(p);
String selectedPrice = money.format(selectedFlight.getPrice()) + "";
fPrice.setText(selectedPrice);
}
}
Я думал, что я на правильном пути, и я пробовал много разных вариантов, но ни один из них не работает.
Кроме того, я знаю, что рейсы добавляются в flightList, потому что JComboBox отображает все добавленные рейсы. Я думаю, что все ярлыки настроены правильно. Мне просто нужно выяснить, как на самом деле получить выбранный объект Flight из flightList, используя flightBox, и извлечь из него значение цены, используя метод getPrice.
EDIT
Из класса CreatePanel (инициализация переменных и сохранение объекта Flight в векторе flightList из JTextFields).
CityTime departure = new CityTime();
departure.setCity(dC);
departure.setDate(dD);
departure.setTime(dT);
CityTime arrival = new CityTime();
arrival.setCity(aC);
arrival.setDate(aD);
arrival.setTime(aT);
Flight newFlight = new Flight();
newFlight.setAirlines(air);
newFlight.setFlightNum(iNum = Integer.parseInt(num));
newFlight.setPrice(dPrc = Double.parseDouble(prc));
newFlight.setDeparture(dC, dD, dT);
newFlight.setArrival(aC, aD, aT);
flightList.add(newFlight);
Из класса «Полет»:
public class Flight
{
// Flight constructor and all other variables/accessors/mutators are added here as well.
private double price;
public double getPrice()
{
return price;
}
}
EDIT
Завершенный код:
if (flightBox.getSelectedIndex() != -1)
{
//flightBox.getSelectedItem(); // returns selected object
outro.setText("The price for your flight is:");
int p = flightBox.getSelectedIndex();
Flight selectedFlight = flightList.get(p);
String selectedPrice = money.format(selectedFlight.getPrice()) + "";
fPrice.setText(selectedPrice);
}
Все векторы flightList были обновлены с помощью элемента.