impossible de convertir de la Chaîne d'ObservableValue<String>
Je suis en train de faire un programme pour gérer et afficher les données sur les aéroports, de leurs vols et ainsi de suite.
Le fait est que j'ai une tableView (en javafx) avec plusieurs tableColumns, et je veux montrer quelques informations (le destin, l'origine, la société, etc) sur chaque colonne, donc j'ai tapé ceci:
@FXML
private TableColumn<Flight, String> destinoCol;
@FXML
private TableColumn<Flight, String> numCol;
@FXML
private MenuButton aeropuerto;
@FXML
private MenuButton tipo;
@FXML
private Button filtrar;
@FXML
private TableColumn<Flight, LocalTime> horaCol;
@FXML
private Button este;
@FXML
private DatePicker fecha;
@FXML
private TableColumn<Flight, String> origenCol;
@FXML
private Label retrasoLabel;
@FXML
private ImageView companiaImg;
@FXML
private VBox detalles;
@FXML
private Button todos;
@FXML
private ImageView avionImg;
@FXML
private Label tipoLabel;
private mainVuelos m;
private List<Airport> aeropuertos;
private Data data;
@FXML
void initialize() {
data = Data.getInstance();
aeropuertos = data.getAirportList();
List<MenuItem> ItemAeropuertos = new LinkedList<MenuItem>();
for (int i = 0; i < aeropuertos.size(); i++) {
MenuItem item = new MenuItem(aeropuertos.get(i).getName());
item.setOnAction((event) -> cambiarAer(event));
ItemAeropuertos.add(item);
}
aeropuerto.getItems().setAll(ItemAeropuertos);
destinoCol.setCellValueFactory(cellData -> cellData.getValue().getDestiny());
}
La méthode getDestiny(), comme il est dit rendements de destin d'un vol spécifique comme une Chaîne de caractères alors, évidemment, je ne peux pas utiliser la dernière instruction, il me dit "impossible de convertir de la Chaîne d'ObservableValue" mais je ne sais vraiment pas comment le résoudre afin d'être en mesure de montrer le destin de cette colonne. Merci à vous tous.
OriginalL'auteur JOSEMAFUEN | 2015-05-19
Vous devez vous connecter pour publier un commentaire.
Selon la La documentation javadoc,
setCellValueFactory(...)
s'attend à unCallback<CellDataFeatures<Flight, String>, ObservableValue<String>>
, j'.e une fonction qui prend unCellDataFeatures<Flight, String>
comme paramètre, et les résultats dans unObservableValue<String>
.Que le message d'erreur dit, votre fonction évalue à un
String
(cellData.getValue().getDestiny()
), qui n'est pas le type correct.Vous avez deux choix, selon vos besoins réels.
Soit vous pouvez créer quelque chose à la volée qui est du type correct: la chose la plus facile à utiliser est un
ReadOnlyStringWrapper
:Cela va afficher la valeur correcte, mais qui ne sera pas bien "câblé" pour le bien du vol de l'objet. Si votre table est modifiable, les modifications ne sont pas automatiquement propagées retour à l'objet sous-jacent, et les modifications apportées à l'objet sous-jacent d'ailleurs ne sont pas automatiquement mise à jour dans la table.
Si vous avez besoin de cette fonctionnalité (et c'est sans doute une meilleure approche de toute façon), vous devez mettre en œuvre votre modèle de classe
Flight
à utiliser JavaFX propriétés:et ensuite vous pouvez faire
Vous êtes les bienvenus. Veuillez cocher la réponse comme correcte si elle a répondu à la question.
OriginalL'auteur James_D
Je suis un peu en retard je pense, mais cela peut aider les autres.
Vous pouvez avoir cade comme ci-dessous
Ce code fonctionne pour les biens autres que chaîne de caractères, comme je l'ai eu de problème avec le "LongProperty".
OriginalL'auteur V.Dev