MenuItem 和图标图形 JavaFX 的大小调整和对齐

Sizing and alignment of MenuItem and icon graphic JavaFX

我这里有一个右键菜单,你可以看到它显示得很好:

当我尝试将右键单击菜单添加到另一个 table 时,它显示如下:

我可以重新对齐图形还是可以强制 MenuItems 为正确的大小?

这是代码(我以相同的方式将其添加到两个 table):

ContextMenu contextMenu = new ContextMenu(TableCommons.getAttendanceMenuItem(30),
                                          TableCommons.getAttendanceMenuItem(10),
                                          TableCommons.getAttendanceMenuItem(5));

this.table.setContextMenu(contextMenu);

import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIcon;
import de.jensd.fx.glyphs.materialdesignicons.MaterialDesignIconView;

static MenuItem getAttendanceMenuItem(int number)
{
    MenuItem attendanceMenuItem = new MenuItem(number + " day Attendance");

    MaterialDesignIconView materialDesignIconView = new MaterialDesignIconView(MaterialDesignIcon.FILE_WORD_BOX);

    materialDesignIconView.setSize("1em");
    materialDesignIconView.setFill(Main.OFFICE_WORD_BLUE_COLOUR);
    attendanceMenuItem.setGraphic(materialDesignIconView);    

    return attendanceMenuItem;    

}

我调查了一下:这是由于在默认 JavaFX 样式表 modena.css 中设置的填充。 OP 没有明确说明他们的确切场景,但在尝试向对话框中的项目添加上下文菜单时,我 运行 陷入了这个问题;菜单项图形总是有额外的填充。

我不是 CSS 专家,但我认为 modena.css 中有问题的代码行如下:

.dialog-pane:no-header .graphic-container {
    -fx-padding: 0.833em 0 0 0.833em; /* 10px 0px 0px 10px */
}

我可以通过将以下内容添加到我自己的样式表来覆盖默认设置来修复它:

.menu-item > .graphic-container {
    -fx-padding: 0em 0.333em 0em 0em;
}