ListViewで動作が異常になってしまいました。JavaFXリストビューを観測可能なリストに追加しても変更が反映されず、選択できません
@FXML
private ListView<Weapon> listViewWeapons;
...
private final ObservableList<Loadout> loadoutList;
public LoadoutViewController() {
...
loadoutList =FXCollections.observableList(CsgoRr.getModel().getLoadoutCache());
...
}
@Override
public void initialize(URL location, ResourceBundle resources) {
...
listViewLoadouts.setItems(loadoutList);
...
}
私はリスト
@FXML
private void newLoadoutOnAction() {
try {
Loadout loadoutToBeStored = new Loadout(new Long[10], "Loadout" + newDuplicateNameLoadoutIncrement);
loadoutToBeStored.setId(DbUtil.storeLoadout(loadoutToBeStored));//store and set id.
CsgoRr.getModel().getLoadoutCache().add(loadoutToBeStored);
System.out.println("Stored new loadout ");
listViewLoadouts.getSelectionModel().select(loadoutToBeStored);
for (Loadout loadout : loadoutList) {
System.out.println("DEBUG LOADOUT CONTAINER OBSERVABLE:" + loadout);
}
} catch (SQLException ex) {//duplicate name
if (ex.getErrorCode() == 23505) {
newDuplicateNameLoadoutIncrement++;
newLoadoutOnAction();
}
Logger.getLogger(LoadoutViewController.class.getName()).log(Level.SEVERE, null, ex);
}
}
に新しいバックパック内を追加する機能を有しているボタンに添付メソッドを呼び出すすべてのデータが正しくロードされ、保存されている、私はもちろんのその部分をデバッグしています。しかし、メソッドnewLoadoutOnActionを呼び出しても、observableリストが参照するリストにデータを入れても、そのlistViewのサイズを変更するまでは変更は見られません。これは唯一の問題ではなく、リストビューのサイズを変更してもリスト内のアイテムを見ることができません。選択できません。このアイテムを選択するには、再度コンストラクタとイニシャライザを呼び出す必要があります。私はこの動作に遭遇したことはありません。どうすればこれらの問題を解決できますか?リストで爽やかなアイテムと
問題:私はそれを得ることができない私は、アイテムを削除し、それらを再度設定しようとしたが、この問題の芽を何に共通するいくつかの他のソリューションは、私がsetItems(null)を入れても、働いていました作業するには、アイテムはまだそこにあります。
コントローラを再度呼び出してすべてを再作成するまで、(UI経由)を選択することはできません。私はこの項目をコードで選択しました。
listViewLoadouts.getSelectionModel().select(loadoutToBeStored);
この実際に選択に必要な項目芽私は、UIの任意のフィードバックが表示されていないと私は私のマウスでそれを選択することはできません。この行を削除しても、私は再びビューを呼び出す(コンストラクタと初期化子)までマウスで選択することはできません。
これはちょっと複雑な問題なので、私はgifで何が起きているのかを見てみることにしました。
は、それは明らかだと思います。
おかげでリストと同期する必要がありますそれはなぜそれが動作するのかと思っていますが、私はコンテンツをすべて印刷していたときにドキュメントを読んでいました。私はビューwasnt :)を発見したので、データは正しい芽です。 –