JavaFX - 摆脱 `CustomMenuItem` 蓝色高亮?

标签 java css javafx

当鼠标悬停在 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 为整个 TableView 设置每个 MenuItem 的样式,我能够让它消失。但我想将其专门应用于 只是 CustomMenuItem

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

最佳答案

由于蓝色突出显示发生在 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 文件中:

样式.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());

你会去掉高光。

TableFilter

关于JavaFX - 摆脱 `CustomMenuItem` 蓝色高亮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955382/

相关文章:

java - Hibernate:如何选择除最后 N 行以外的所有行?

css - 使用 PhantomJS 将页面呈现为 PDF 时不考虑外部和本地 CSS

html - 如何使用 CSS/Bootstrap 网格系统水平排列两行?

java - 向 JavaFX MediaPlayer.Status 添加更改监听器以及为什么 getStatus() 方法出现故障?

JavaFX 手动触发 TextField ActionEvent |以编程方式

dialog - 输入验证失败时继续显示对话框

java - 在 java 中转义 Html?

java - 使用带有 GUI 的 Netbeans 进行编程

Java集合以键值对的形式存储多种类型的数据

html - CSS 顶部菜单栏