Wie man das ausgewählte Element in der JList und die Nutzung casting
In einem Teil meines Programms, ich habe eine JList
dass es eine Liste auf Standorten, und ich bekam eine API, die Sie verwenden sollten ein Element aus der JList
und drucken Sie das Wetter an diesem Ort. So, jetzt kann ich es nicht tun, weil ich
WeatherAPI chosen = locList.getSelectedIndex();
aber es gibt einen Fehler: Type mismatch: cannot convert from int to WeatherAPI.
Dies ist das Beispiel für die API, die funktioniert:
LinkedList<WeatherAPI> stations = FetchForecast.findStationsNearTo("cityname");
for (WeatherAPI station : stations) {
System.out.println(station);
}
WeatherAPI firstMatch = stations.getFirst();
So, ich möchte nicht, dass man die erste option, die ich will, um die ausgewählte Position durch den Benutzer. Es ist alles über das casting.
Ich habe auch versucht, das was nicht funktioniert hat:
WeatherAPI stations;
WeatherAPI firstMatch = stations.get(locList.getSelectedIndex());
Bekam ich den rest des Codes, dass es mit dem "firstMatch, aber es nutzt nur, wenn es seine Art ist WeatherAPI.
Type mismatch: cannot convert from Object to WeatherAPI
Crosspost: coderanch.com/t/608471/GUI/java/selected-item-JList-casting. Warum sind Sie verschwenden jedermänner mal eine Frage stellen, die bereits beantwortet wurde?
InformationsquelleAutor Alex Jj | 2013-03-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie zwei Möglichkeiten.
Wenn Sie mit Java 7 und Sie haben Ihren
JList
undListModel
mit der richtigen Generika Signatur. Vorausgesetzt, so etwas wie...Und eine ähnliche Liste mit Modell-Erklärung, die Sie nutzen könnten
Sonst müssen Sie gegossen das Ergebnis
Schon ein wenig old school ist, würde ich in der Regel überprüfen Sie das Ergebnis, bevor der cast
WeatherAPI chosen = (WeatherAPI)locList.getSelectedValue();
aber bei der Zusammenstellung, das es gibt und Fehler, und zeigt auf die Zeile, die die API verwendet ausgewähltList<ForecastForOneDay> forecast = FetchWeatherForecast.getWeatherForecast(chosen);
Btw hier habe ich eine Hilfe von jemand der das schon getan hat, dieses Programm, aber ich weiß nicht, was soll das genau bedeuten: haben Sie eine Liste der Stationen irgendwo die Sie verwenden, um Informationen in Ihrem locList? Wenn Sie dies tun, wenn ein Benutzer klickt auf etwas, das in die JList, die Sie verwenden können, locList.getSelectedIndex() als parameter für die ein-Stationen.Holen Sie sich nennen, und die Antwort, die Sie bekommen können platziert werden ausgewählt.
Sie habe erklärt Sie Ihre Liste zurückzukehren, verwenden Sie ForecastForOneDay Objekt, wie Sie erwarten, dass es magisch geworden, eine WeatherAPI Objekt?
öhh ich weiß nicht :/ ich habe gerade versucht, diesem Beispiel zu Folgen, was-API zur Verfügung gestellt. das Programm verwendet die firstMatch aber ich habe, um es zu ersetzen mit dem ausgewählten Element. Also habe ich wirklich nun fest.
InformationsquelleAutor MadProgrammer
Versuchen,getSelectedValue():
Ihre Liste und Liste Modell MUSS in der Lage sein zu enthalten WeatherAPI Objekte, die sonst nur das Ergebnis, das Sie erwarten können ist ein String
Ich würde nicht davon ausgehen nur weil man sich mit Eclipse, bist du automatisch mit Java 7 😉
Machen Sie es wie diese:
DefaultListModel<WeatherAPI> myList = new DefaultListModel<WeatherAPI>(); JList<WeatherAPI> locList = new JList<WeatherAPI>(myList);
Sie müssen entweder so, oder ändern Sie die Erwartungen von dem, was zurückgegeben wird, wie ein ausgewähltes Element, um ein String-Objekt.
InformationsquelleAutor Walery Strauch