我正在制作一个程序,当我上传其中一个系列的新剧集时通知我,我有一个内置的通知中心,用于存储上传内容。 我是如何做到这一点的,基本上是制作一个VBox,NotificationPanel,然后有一个基本的东西,如关闭按钮的nLayout,每次我上传一个新剧集时,为每个系列添加不同名称和文字的nLayout。但我已经看到这不可能",因为我收到了这个错误:
Exception in thread "JavaFX Application Thread" java.lang.IllegalArgumentException: Children: duplicate children added: parent = VBox@2168def7
任何人都知道如何让这个工作?
答案 0 :(得分:0)
您无法多次添加同一节点。 只需为每个通知创建NotificationPanel的新实例
答案 1 :(得分:0)
正如评论所说,你不能在你的VBox中多次添加同一个类的实例。
每当你抓住你的活动(上传剧集),你可以做的是:
顺便说一句,通过这样做,您不会使用JavaFX的花哨模型 - 视图绑定机制。更好的解决方案是拥有一个带有ObservableList的模型类,您可以在其中推送一个对象的实例,该对象包含上传的剧集的信息, 并使用自定义CellFactory将此ObservableList绑定到ListView,以便按照您希望的方式构建List的单元格。
您可以在此处找到有关绑定机制的信息:http://docs.oracle.com/javafx/2/binding/jfxpub-binding.htm
您可以在此处找到有关ListView和自定义CellFactory的信息:http://docs.oracle.com/javafx/2/ui_controls/list-view.htm
希望有所帮助:)
答案 2 :(得分:0)
如果我找到你,你应该创建自己的自定义节点。例如
public class EpisodeBox extends Vbox {
public EpisodeBox(String name){
getChildren().add(new Label(name));
getChildren().add(new Button("Close"));
// ... etc.
}
}
正如Kwoinkwoin所述,您可以在每个活动中创建一个新的EpisodeBox并将其添加到您的Panel。