我一直在努力从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;");
但我无法弄清楚当用鼠标聚焦时如何让CustomerMenuItem
失去蓝色边框。我尝试了以下但是它不起作用
CustomMenuItem item = FilterPanel.getInMenuItem(this);
item.setStyle("-fx-text-fill: white;");
如果您想要全面了解,那么这是PR,但是有人知道如何操纵它消失吗?
通过使用此CSS为整个MenuItem
设置每个TableView
样式,我能够让它消失。但我想将其专门应用于{em>只是 CustomMenuItem
。
.menu-item:focused {
-fx-background-color: transparent;
}
答案 0 :(得分:2)
由于在ContextMenu获得焦点时发生蓝色突出显示,因此您在此处使用Pseudoclass。在CSS中,伪类用于定义节点的特定状态。典型的状态是悬停,选择,聚焦......
处理此问题的方法是添加一个CSS文件,您可以轻松地将样式设置应用于任何可能的状态。
首先,将样式类应用于ContextMenu
(因此使用上下文菜单的其他控件不会受这些设置的影响)。例如,column-filter
:
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());
你将摆脱亮点。