Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使ListView与包含元素时的外观相同?_Java_User Interface_Javafx - Fatal编程技术网

Java 如何使ListView与包含元素时的外观相同?

Java 如何使ListView与包含元素时的外观相同?,java,user-interface,javafx,Java,User Interface,Javafx,我有一个列表视图与可观察列表绑定在一起。最初,当为空时,ListView具有统一的颜色,如图所示: 将元素添加到列表后,列表中会充满具有自己颜色的单元格: 显然,我不希望它表现得像这样,所以这里有一个问题:如何使列表在第二张图片上看起来像,即使它是空的 单元格由ListView上的cellFactory设置样式。因为只有当列表中有元素时才会触发,所以当列表中没有任何元素时,只需向列表中添加一个空值即可 ObservableList<String> list = FXCollect

我有一个
列表视图
可观察列表
绑定在一起。最初,当为空时,
ListView
具有统一的颜色,如图所示:

将元素添加到列表后,列表中会充满具有自己颜色的单元格:


显然,我不希望它表现得像这样,所以这里有一个问题:如何使列表在第二张图片上看起来像,即使它是空的

单元格由ListView上的cellFactory设置样式。因为只有当列表中有元素时才会触发,所以当列表中没有任何元素时,只需向列表中添加一个空值即可

ObservableList<String> list = FXCollections.observableArrayList();
list.add("");
ListView<String> listview = new ListView<>();
listview.setItems(list);
observeList=FXCollections.observearraylist();
列表。添加(“”);
ListView ListView=新建ListView();
setItems(列表);

然后在添加内容时,删除空值。有点小技巧,但应该会给你想要的视觉效果。

单元格由列表视图上的cellFactory设置样式。因为只有当列表中有元素时才会触发,所以当列表中没有任何元素时,只需向列表中添加一个空值即可

ObservableList<String> list = FXCollections.observableArrayList();
list.add("");
ListView<String> listview = new ListView<>();
listview.setItems(list);
observeList=FXCollections.observearraylist();
列表。添加(“”);
ListView ListView=新建ListView();
setItems(列表);

然后在添加内容时,删除空值。有点像黑客,但会给你想要的视觉效果。

谢谢,但我知道“黑客”。只是觉得还有更简单的;)这种方法的问题是,在处理数据时,您必须考虑这种特殊情况:即,使用视图的这种变通方法会污染数据模型中的逻辑。OTOH,我真的看不到任何真正的钩子来做这件事-只有当项目数>0时,才会调用在虚拟流中布局单元的皮肤实现,所以你必须实现一个自定义皮肤(这会变成一个项目)。@James_D-我完全同意,但找不到一种干扰性更小的方法来处理它。我确实认为,对于这个用例,处理edge用例不会太难。谢谢,但我知道“hack”。只是觉得还有更简单的;)这种方法的问题是,在处理数据时,您必须考虑这种特殊情况:即,使用视图的这种变通方法会污染数据模型中的逻辑。OTOH,我真的看不到任何真正的钩子来做这件事-只有当项目数>0时,才会调用在虚拟流中布局单元的皮肤实现,所以你必须实现一个自定义皮肤(这会变成一个项目)。@James_D-我完全同意,但找不到一种干扰性更小的方法来处理它。我确实认为,对于这个用例,处理edge用例不会太难。