Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaFX-去掉'CustomMenuItem'蓝色突出显示?_Java_Css_Javafx - Fatal编程技术网

JavaFX-去掉'CustomMenuItem'蓝色突出显示?

JavaFX-去掉'CustomMenuItem'蓝色突出显示?,java,css,javafx,Java,Css,Javafx,当鼠标悬停在ContextMenu实现上时,我一直在努力从中删除蓝色突出显示 private void attachContextMenu() { CustomMenuItem item = FilterPanel.getInMenuItem(this); ContextMenu contextMenu = new ContextMenu(); contextMenu.getItems().add(item); tableColumn.setContextMe

当鼠标悬停在
ContextMenu
实现上时,我一直在努力从中删除蓝色突出显示

private void attachContextMenu() {
    CustomMenuItem item = FilterPanel.getInMenuItem(this);
    ContextMenu contextMenu = new ContextMenu();
    contextMenu.getItems().add(item);


    tableColumn.setContextMenu(contextMenu);
}

通过包含
VBox
我可以将它涂成白色,并去除大部分蓝色闪光

filterVBox.setStyle("-fx-background-color: white;");
但是我不知道如何让
customernumitem
在鼠标聚焦时丢失蓝色边框

CustomMenuItem item = FilterPanel.getInMenuItem(this);
item.setStyle("-fx-text-fill: white;");
如果你想了解全貌,这里有一个例子,但是有人知道我如何操纵它,让它消失吗

通过使用此CSS为整个
TableView
设置每个
MenuItem
的样式,我可以让它消失。但我想专门将其应用于
CustomMenuItem

.menu-item:focused {
   -fx-background-color: transparent;
}

因为当ContextMenu获得焦点时会出现蓝色突出显示,所以这里处理的是一个。在CSS中,伪类用于定义节点的特定状态。典型状态为悬停、选定、聚焦

处理这个问题的方法是添加一个CSS文件,在这里您可以轻松地将样式设置应用于任何可能的状态

首先,将样式类应用于
上下文菜单
(这样其他使用上下文菜单的控件就不会受到这些设置的影响)。例如,
列过滤器

private void attachContextMenu() {
    CustomMenuItem item = FilterPanel.getInMenuItem(this);

    ContextMenu contextMenu = new ContextMenu();
    contextMenu.getStyleClass().add("column-filter");

    contextMenu.getItems().add(item);
    tableColumn.setContextMenu(contextMenu);
}
然后将所需的样式规则添加到css文件:

style.css

.column-filter .context-menu {
    -fx-background-color: white;
}

.column-filter .context-menu:focused {
    -fx-background-color: white;
}

.column-filter .custom-menu-item {
    -fx-background-color: white;
    -fx-padding: 0;
}

.column-filter .custom-menu-item:focused {
    -fx-background-color: white;
}
最后,您需要将此样式表应用于场景:

scene.getStylesheets().add(getClass().getResource("style.css").toExternalForm());
然后你就可以去掉突出部分了


给您一个表类并执行“.table.menu项:focused{..}”不是一个选项吗?您是否尝试过找出哪个元素导致高亮显示?从上下文菜单中可以看到一个复合控件。非常好,谢谢你。由于API无法直接访问它所使用的
场景
,因此它可以访问
TableView
,因此我将CSS表添加到该控件中。感谢您费尽心思克隆该控件。没问题,我已经克隆了ControlsFX!是的,逻辑方法是将
tablefilter.css
添加到ControlsFX资源中,并在默认情况下将其加载到
tablefilter
构造函数中:
tableView.getStylesheets().add(getClass().getResource(“/org/ControlsFX/control/tablefilter.css”).toExternalForm())我刚刚加入了一个PR,并链接到这里,为您评分。谢谢谢谢,现在您也可以从代码中删除
setStyle()
调用。