我正在替换表列的 javafx 上下文菜单。上下文菜单将允许用户访问 Excel,例如过滤表视图。
一切正常,但我现在不想在列标题上的任何鼠标单击事件上打开上下文菜单。不仅仅是标准的右键单击。
这里的问题是,你只能通过父表视图中的lookupAll()来获取头节点。
由于事实是,只有在呈现表视图后才可以进行查找,因此我使用 Platform.runLater(..) 调用此方法。
表视图类:
private void setHeaderNodesEventHandler() {
int i = 0;
for (final Node headerNode : lookupAll(".column-header")) {
((AbstractFilterableTableColumn<E, ?>) getColumns().get(i)).setHeaderNodeEventHandler(headerNode);
i++;
}
}
表列类:
public void setHeaderNodeEventHandler(final Node headerNode) {
headerNode.addEventHandler(MouseEvent.MOUSE_CLICKED, new EventHandler<MouseEvent>(){
@Override
public void handle(final MouseEvent e) {
contextMenu.show(headerNode, e.getScreenX(), e.getScreenY());
}
});
}
这里的问题是,我必须相信,找到的 headerNode 的顺序与列相同。我真的不需要这里发生任何不好的事情。
我宁愿有类似的东西(见下文),这是不可能的,因为我无法从 Parent 转换到我的 AbstractFilterableTableColumn。
private void setHeaderNodesEventHandler() {
for (final Node headerNode : lookupAll(".column-header")) {
final AbstractFilterableTableColumn<E, ?> column = (AbstractFilterableTableColumn<E, ?>) headerNode.getParent();
column.setHeaderNodeEventHandler(headerNode);
}
}
您是否有任何想法可以在不信任顺序的情况下获取 headerNodes 及其各自的表列?
因此,如果有人能解决我的问题……我将非常感激。 :)