如何在JList中获取所选项并使用强制转换

时间:2013-03-30 20:27:59

标签: java swing casting jlist getselection

在我的程序的一部分中,我有JList它有一个关于位置的列表,我有一个API,它应该使用JList中的项目并打印出天气那个位置。所以现在我不能这样做,因为我使用

WeatherAPI chosen =  locList.getSelectedIndex();

但是有一个错误:类型不匹配:无法从int转换为WeatherAPI。

这是有效的API示例:

LinkedList<WeatherAPI> stations = FetchForecast.findStationsNearTo("cityname");
for (WeatherAPI station : stations) {
    System.out.println(station);
}
WeatherAPI firstMatch = stations.getFirst();

所以我不想得到第一个选项,我希望得到用户选择的位置。这都是关于铸造的。 我也试过这个不起作用:

WeatherAPI stations;
WeatherAPI firstMatch = stations.get(locList.getSelectedIndex());

我得到了剩下的代码,它使用了“firstMatch,但只有在它的类型是WeatherAPI时才使用它。”

2 个答案:

答案 0 :(得分:5)

你有两个选择。

如果您使用的是Java 7,并且已使用正确的泛型签名创建了JListListModel。假设有类似......

JList<WeatherAPI> locList;

和类似的列表模型声明一样,你可以使用

WeatherAPI chosen =  locList.getSelectedValue();

否则你需要施放结果

WeatherAPI chosen =  (WeatherAPI)locList.getSelectedValue();

有点老派,我通常会在演员表之前查看结果

Object result =  locList.getSelectedValue();
if (result instanceof WeatherAPI) {
    WeatherAPI chosen =  (WeatherAPI)result
}

答案 1 :(得分:2)

尝试使用getSelectedValue()

WeatherAPI chosen =  locList.getSelectedValue();