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

Ale*_* Jj 1 java swing casting jlist getselection

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

WeatherAPI chosen =  locList.getSelectedIndex();
Run Code Online (Sandbox Code Playgroud)

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

这是有效的API示例:

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

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

WeatherAPI stations;
WeatherAPI firstMatch = stations.get(locList.getSelectedIndex());
Run Code Online (Sandbox Code Playgroud)

我得到了剩下的代码,它使用了"firstMatch",但只有当它的类型是WeatherAPI时才使用它.

Mad*_*mer 5

你有两个选择.

如果您使用的是Java 7并且已经创建JListListModel使用了正确的泛型签名.假设像......

JList<WeatherAPI> locList;
Run Code Online (Sandbox Code Playgroud)

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

WeatherAPI chosen =  locList.getSelectedValue();
Run Code Online (Sandbox Code Playgroud)

否则你需要投射结果

WeatherAPI chosen =  (WeatherAPI)locList.getSelectedValue();
Run Code Online (Sandbox Code Playgroud)

是一所古老的小学校,我通常会在演员表之前查看结果

Object result =  locList.getSelectedValue();
if (result instanceof WeatherAPI) {
    WeatherAPI chosen =  (WeatherAPI)result
}
Run Code Online (Sandbox Code Playgroud)