java - 如何获取 JList 中的选定项并使用转换

标签 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 时使用它。

最佳答案

你有两个选择。

如果您使用的是 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
}

关于java - 如何获取 JList 中的选定项并使用转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15723134/

相关文章:

java - 在 Lucene (java) 中计算所有结果的最快方法

javaCC 插入不需要的语句

java - 将扫描仪从静态传递到非静态并返回 float java

JAVA继承访问

Java Swing JTextField - 只有数字

java - JTable 中没有标题

Java/Swing : ownership of the system clipboard

C++ 通过右引用传递混淆的函数

Swift:不需要条件转换但需要 "must"?

c++ - 函数式转换语法如何工作?