2013-03-30 92 views
1

在我的程序的一部分中,我有一個JList它有一個位置列表,我有一個API,它應該使用JList中的一個項目並打印走出那個地方的天氣。所以現在我不能這樣做,因爲我用如何獲取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

+1

嘗試.getSelectedValues()? –

+0

類型不匹配:無法從Object轉換爲WeatherAPI –

+0

Crosspost:http://www.coderanch.com/t/608471/GUI/java/selected-item-JList-casting。爲什麼你在浪費每個人時間發佈一個已經回答的問題? – camickr

回答

2

嘗試使用getSelectedValue()

WeatherAPI chosen = locList.getSelectedValue(); 
+2

假設OP使用Java 7並且使用正確的泛型簽名創建了JList – MadProgrammer

+0

沒有工作,錯誤:**類型不匹配:無法從Object轉換爲WeatherAPI ** :(以下是我如何製作JList。 DefaultListModel myList = new DefaultListModel (); JList locList = new JList(myList);'@MadProgrammer我的JList工作正常我可以添加和刪除項目,是的,我使用Eclipse,所以它應該是Java 7已經 –

+4

Your列表和列表模型必須能夠包含WeatherAPI對象,否則你可以期望得到的唯一結果是字符串 – MadProgrammer

5

你有兩個選擇

如果您使用的是Java 7,你已經創建了JList和0。使用正確的泛型簽名。假設像...

JList<WeatherAPI> locList; 

而且類似的列表模型聲明,你可以使用

WeatherAPI chosen = locList.getSelectedValue(); 

否則,你將需要轉換的結果

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

已經有點老派,我通常會檢查鑄造前的結果

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

感謝您的回覆,我認爲該投射工作'WeatherAPI選擇=(WeatherAPI)locList.getSelectedValue();'但在編譯它給出和錯誤,並指向API使用**選擇的行**'List 預測 \t \t = FetchWeatherForecast.getWeatherForecast(選擇);' –

+0

順便說一句,在這裏我有一個已經完成這個程序的人的幫助,但我不知道這意味着什麼:_你有一個站的列表你用來把信息放入你的locList中?如果這樣做,當用戶點擊JList中的某些內容時,可以使用locList.getSelectedIndex()作爲站點.get調用的參數,並且您得到的答案可以放在選擇內._ –

+0

您已將您的列表聲明爲返回使用ForecastForOneDay對象,你如何期待它神奇地成爲一個WeatherAPI對象? – MadProgrammer

相關問題