我有两个ObservableList,其中一个包含一些歌曲,另一个包含与歌曲相关的目录。
我希望当从它的ObservableList中删除一个目录时,所有包含该目录的歌曲都从它们的ObservableList中删除。但是当我这样做的时候,只有带奇数id的歌曲被移除,带偶数id的仍然存在!!!
我的ObservableLists在另一个类中,“Controller”是包含ObservableLists的类的对象。下面是我的代码:
private static ObservableList<SongModel> songModelObservableList = FXCollections.observableArrayList();
private static ObservableList<Directory_Model> directoryModelObservableList = FXCollections.observableArrayList();
现在是我删除目录的代码:
for (int j = 0 ; j < controller.getSongModelObservableList().size() ; j++)
if (controller.getSongModelObservableList().get(j).getPath().contains(controller.getDirectoryModelObservableList().get(i).getPath())){
controller.getSongModelObservableList().remove(controller.getSongModelObservableList().get(j));
}
controller.getDirectoryModelObservableList().remove(controller.getDirectoryModelObservableList().get(i));
这里。在第一个if中,我检查哪个songModel(我的歌曲类)有目录的路径,以便将其从SongObServableList中删除。
有什么办法可以解决吗?我想删除所有目录的歌曲,而不是带有奇数ID的。
如果从列表中删除indexj
处的元素,则修改后位置j
处的项就是以前在indexj+1
处的项。由于您在循环的每次迭代之后都会增加索引,因此如果在迭代中移除一个项,则会跳过该项。如果未删除任何项,则只增加索引:
final String removePath = controller.getDirectoryModelObservableList().get(i).getPath();
for (int j = 0; j < controller.getSongModelObservableList().size();)
if (controller.getSongModelObservableList().get(j).getPath().contains(removePath)){
controller.getSongModelObservableList().remove(j);
} else {
j++;
}
}
controller.getDirectoryModelObservableList().remove(i);
不过,简单地将谓词
与removeif
一起使用会更简单:
final String removePath = controller.getDirectoryModelObservableList().get(i).getPath();
controller.getSongModelObservableList().removeIf(element -> element.getPath().contains(removePath));
我在JavaFx应用程序中有一个名为choiceBoxPizza的ChoiceBox。 在我的控制器中,我声明它: 我包含一些测试数据的函数是: 所以应该用填充。奇怪的是,我没有得到任何异常,并且选择框在调用方法后仍然为空。 我的逻辑有错误吗?
任何帮助都将不胜感激!提前感谢!
我是javafx新手,正在尝试在textflow中显示大量文本。它显示得很好,但我就是不知道如何删除文本。 所以我要做的是像这样从textFlow中删除所有文本节点 但当我这样做并向textFlow添加一些内容时,它会显示在已经显示的文本之后。我想删除那里的文本,并显示从文本流开始添加的文本。 我想我必须以某种方式重新呈现textflow的视图,但我不知道怎么做。那么如何删除所有内容并重新添加文本
我有一个TableView(javafx.scene.control.TableView),我用数据填充了它。该数据作为ArrayList从数据库中检索,因此我使用了folowing流: 我用预算数据填充ArrayList 我更新数组中的值 初始数据显示正确。我原本期望通过更改ArrayList(最后一步),ObservableList会看到更改并将其传递给我的TableView。为了使数组中的更
所以我是JavaFX的新手,我正在尝试为学校做一个应用程序,我已经阅读了很多相关的帖子,但我似乎不知道如何为我自己的案例做。这是一张照片 因此,大屏幕是我的主屏幕,带有红色边框的是Vbox的子屏幕。对于孩子,我有一个单独的FXML和一个控制器。当我点击“成交”按钮时,我想删除Vbox的特定子级。 我知道我应该做parent.get孩子()。删除(specific_child_node);问题是我不
我创建了一个由HBox、按钮和标签组成的数组。每次按下“添加”按钮,我都会设置: