我有一堆CheckBoxTreeItem<MyClass>
使用TreeView
构建项目层次结构。我创建了一个新对象并将其添加到其父对象中:
CheckBoxTreeItem<MyClass> created = new CheckBoxTreeItem<MyClass>(
myClassObj, new Label("label");
parent.getChildren().add(created); // parent is another CheckBoxTreeItem
除此之外,我使用这样的CellFactory
:
myTreeView.setCellFactory(CheckBoxTreeCell.<MyClass>forTreeView());
问题:如果我折叠/展开GUI中的项目,标签偶尔会消失,留下应该呈现的空白区域。所以它有点,但不可见。但是,显示了Label
(来自MyClass
对象)的文本权限。我观察了我自己的类扩展CheckBoxTreeItem
和CheckBoxTreeCell
的问题,但问题似乎更普遍,因为它可以使用默认类重现。如果您有任何想法,我会感谢任何提示。
编辑:这是一个MCVE - 只需展开并折叠一些复选框即可观察奇怪的行为:
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.control.cell.CheckBoxTreeCell;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TreeViewSample3 extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) {
//create the root element
CheckBoxTreeItem<String> rootItem =
new CheckBoxTreeItem<String>("Root", new Label("Root"));
rootItem.setExpanded(true);
rootItem.setIndependent(true);
final TreeView<String> tree = new TreeView<String>(rootItem);
tree.setCellFactory(CheckBoxTreeCell.<String>forTreeView());
//put some checkboxes to the tree
for (int i = 0; i < 3; i++) {
final CheckBoxTreeItem<String> child =
new CheckBoxTreeItem<String>("2nd level", new Label("tier 2"));
final CheckBoxTreeItem<String> grandChild =
new CheckBoxTreeItem<String>("3rd level", new Label("tier 3"));
child.getChildren().add(grandChild);
rootItem.getChildren().add(child);
}
StackPane root = new StackPane();
root.getChildren().add(tree);
primaryStage.setScene(new Scene(root, 300, 250));
primaryStage.show();
}
}
编辑2:错误的屏幕截图。只有在您反复展开/折叠树中的项目时才会出现这种情况。似乎底部的项目以某种方式未正确呈现。注意,使用的版本是8.40。