için döküm yapılamıyor JavaFX'te bir GUI oluşturmaya çalışıyorum. Bazı verileri göstermek için kullanmak istediğim bir ListView var. Kullanmak istediğim iki tip olası veri seti var, onlara Arabalar ve Bisikletler diyelim. İlgili düğmeye bastığımda, ihtiyacım olan verileri yüklemek istiyorum. Şimdiye kadar benim denetleyicisi sınıf şuna benzer: düğmelerinden birine basıldığındaJavaFX: Gözlemlenebilir Listeler, ClassCastException: A B
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.util.Callback;
import java.util.List;
public class FXMLController {
@FXML
ListView lv_list;
@FXML
Button button_cars;
@FXML
Button button_bikes;
List<Cars> cList;
List<Bikes> bList;
Server serv;
private ObservableList observableList = FXCollections.observableArrayList();
public void initScene szene) {
/* initializes serv so it properly yields data */
}
public void listAllCars() {
cList = serv.getAllCars();
updateCarList();
}
private void updateCarList() {
observableList.setAll(cList);
lv_list.setItems(observableList);
lv_list.setCellFactory(new Callback<ListView<Cars>, ListCell<Cars>>() {
@Override
public ListCell<Cars> call(ListView<Cars> listView) {
return new ListViewElemCars(); // creates stuff to populate the list
}
});
}
public void listAllBikes() {
bList = serv.getAllBikes();
updateBikeList();
}
private void updateBikeList() {
observableList.setAll(bList);
lv_list.setItems(observableList);
lv_list.setCellFactory(new Callback<ListView<Bikes>, ListCell<Bikes>>() {
@Override
public ListCell<Bikes> call (ListView<Bikes> listView) {
return new ListViewElemBikes(); //same as with cars
}
});
}
}
listeleme yöntemleri olur. Yöntemler kendileri oldukça iyi çalışıyorlar - arabaların düğmelerine basarsam, tüm arabalar tahmin edildikleri şekilde ortaya çıkıyor. Aynı bisikletler için de geçerli.
Exception in thread "JavaFX Application Thread" java.lang.ClassCastException: Cars cannot be cast to Bikes
Ben updateCarList/updateBikeList yöntemlerde kontrolsüz çağrılar nedeniyle sanırım, ama burada zararına gerçekten şeyler: Ancak, ne zaman aşağıdaki hatayı alıyorum, birbiri ardına basın deneyin. Bir şekilde bu şeyi bir ListView ile yapabilmek istiyorum, ama burada neyin yanlış olduğunu anlamıyorum. Burada neyi özlüyorum?
Kural dışı durum hakkında daha fazla bilgi gönderebilir misiniz? Belki de tam yığınların bir çift satırı? –