在教程https://docs.oracle.com/javafx/2/ui_controls/tree-view.htm中,将contextMenu添加到TreeCell以允许特定于项目的上下文。
在这种情况下,不是为每个单元创建一个新的ContextMenu(),而是使ContextMenu静态并在静态初始化器中创建项目,例如。
private final class TextFieldTreeCellImpl extends TreeCell<String> {
private static final ContextMenu addMenu = new ContextMenu();
static {
MenuItem addMenuItem = new MenuItem("Add Employee");
addMenu.getItems().add(addMenuItem);
addMenuItem.setOnAction(new EventHandler() {
public void handle(Event t) {
TreeItem newEmployee =
new TreeItem<String>("New Employee");
getTreeItem().getChildren().add(newEmployee);
}
});
}
为每个单元创建一个新的ContextMenu实例有什么好处吗?