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()
调用。