【发布时间】:2015-02-22 04:13:17
【问题描述】:
我正在创建一个highlighting communication logger,它使用ListView 在单个单元格中显示每条消息。
它基本上可以工作,但是当我快速上下滚动时,会发生奇怪的事情。如您所见,我突出显示了当前选定的单元格和鼠标所在的单元格。上下滚动后,突出显示的单元格不是我的鼠标指针所在的单元格,对于某些单元格,我无法通过单击选择它们。
我能够在一个非常简单的示例中重现这一点。假设我们有一个带有自定义MyListCell 的字符串ListView,使用TextFlow 呈现这些单元格。 MyListCell 的 updateItem 方法是这样的
@Override
protected void updateItem(String item, boolean empty) {
super.updateItem(item, empty);
if (empty || item == null) {
setText(null);
setGraphic(null);
return;
}
TextFlow textFlow = new TextFlow(new Text(item));
setGraphic(textFlow);
setText(null);
}
在初始化中,我只是创建了一个新的可观察字符串数组,并相应地设置了单元工厂:
public ObservableList<String > content = FXCollections.observableArrayList();
public ListView<String> listView;
@Override
public void initialize(URL location, ResourceBundle resources) {
listView.setCellFactory(cb -> new MyListCell());
listView.setItems(content);
/* ... /*
完整的工作示例代码仅包含一些文件(您需要调整包路径):
问题:谁能确认这种行为并告诉我我做错了什么?
我的系统是 Ubuntu 14.04 和 Oracle jdk 1.8.0_25
【问题讨论】:
-
另一个发现:当我用简单的
HBox替换TextFlow时,我似乎无法重现该问题。
标签: java listview javafx listviewitem