JavaFx 菜单项加速器 Javafx css

标签 java javafx javafx-css

我尝试将 JavaFX 菜单项标签图标化。我为菜单项标签和加速器标签复制了图标。 这是一张说明我的问题的图片。

enter image description here

这是 Javafx CSS 代码:

.menu-item > .label {

}

#miRestore .label{
    -fx-graphic: url("/img/Upload_16x16.png");
}
#miBackup .label {
    -fx-graphic: url("/img/Flash%20Disk_16x16.png");
}
#miClose .label {
    -fx-graphic: url("/img/Delete_16x16.png");
}

#miSettings .label {
    -fx-graphic: url("/img/Settings_16x16.png");
}

#miRegistre . label{
    -fx-graphic: url("/img/Help_16x16.png");
}

最佳答案

我找到了一个可靠的解决方案: 在 Scene Builder/FXML(无论你喜欢什么), 将样式类(不是 id)附加到每个你想要有图标的菜单项。 现在将样式表添加到菜单栏,在其中为每个带有图标的项目放置以下 CSS:

.yourClassName > .label{
    -fx-graphic: url("yourImageUrl");
}

在 CSS 文件的末尾,添加以下内容以删除所有第二张图片:

.context-menu .accelerator-text{
    -fx-graphic: none;
}

这样做是将每个 -accelerator-text 的 -fx-graphic 设置为“无”。所以它基本上再次删除了图像。

现在您的菜单项文本前面将只有图标,而不是加速器文本。 为了让您具体了解这是如何完成的,我为您做了一个小例子: sample

这是将以下 CSS 样式表添加到我的菜单栏的结果, 并将相应的 CSS 样式类添加到我的菜单项中:

.newIcon > .label{
    -fx-graphic: url("px16/file.png");
}
.openIcon > .label{
    -fx-graphic: url("px16/folderEmpty.png");
}
.closeIcon > .label{
    -fx-graphic: url("px16/minus.png");
}
.saveIcon > .label{
    -fx-graphic: url("px16/save.png");
}
.saveAsIcon > .label{
    -fx-graphic: url("px16/folder.png");
}
.quitIcon > .label{
    -fx-graphic: url("px16/error.png");
}
.context-menu .accelerator-text{
    -fx-graphic: none;
}

这是我在 StackOverflow 上的第一个回答,我希望这对某人有所帮助。

关于JavaFx 菜单项加速器 Javafx css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583682/

相关文章:

java - 使用 JavaFX 手动触发 CheckComboBox 的下拉菜单

屏幕中央的 JavaFX 位置对话框和舞台

css - 是否可以在 CSS 中设置 JavaFX 静态属性?

java - 按钮悬停和按下效果 CSS Javafx

java - Jackson JSON、不可变类和接口(interface)

java - 程序无法运行扫描仪无法解决

java - getResource 和 getResourceAsStream 之间的区别?

javafx - 使用 jfx 解析 CSS 时如何修复 out-of-place 'expected RBRACE' 错误?

java - 如何安全取消TimerTask?

java - glTranslatef 不随 z 轴移动