受http://docs.oracle.com/javafx/2/ui_controls/tree-view.htm上的 JavaFX 教程的启发,我想知道如何更改行为以在编辑模式下输入单元格。我想得到的行为是
- 单击鼠标左键:只需选择单元格
- 在两次鼠标左键单击上:选择单元格并调用一些操作
- 鼠标右键单击:在编辑模式下输入单元格
我试图在 TreeView/TreeCell 上安装鼠标事件处理程序,但似乎该事件已被 TreeCellBehavior 消耗。
在类 TreeCellBehvior 中有以下方法:
private void simpleSelect(MouseEvent e) {
TreeView tv = getControl().getTreeView();
TreeItem treeItem = getControl().getTreeItem();
int index = getControl().getIndex();
MultipleSelectionModel sm = tv.getSelectionModel();
boolean isAlreadySelected = sm.isSelected(index);
tv.getSelectionModel().clearAndSelect(index);
// handle editing, which only occurs with the primary mouse button
if (e.getButton() == MouseButton.PRIMARY) {
if (e.getClickCount() == 1 && isAlreadySelected) {
tv.edit(treeItem);
} else if (e.getClickCount() == 1) {
// cancel editing
tv.edit(null);
} else if (e.getClickCount() == 2/* && ! getControl().isEditable()*/) {
if (treeItem.isLeaf()) {
// attempt to edit
tv.edit(treeItem);
} else {
// try to expand/collapse branch tree item
treeItem.setExpanded(! treeItem.isExpanded());
}
}
}
}
我不确定是否可以用我自己的实现替换 TreeCellBehavior。虽然这种方法是私有的,但我不确定这是否是正确的方法。任何想法?