You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaFX中通过CSS指定字体图标?

如何在JavaFX中通过CSS指定字体图标?

嘿,我来给你分享个实用方案,这样其他开发者想替换图标时改改CSS就行,不用动Java代码,完全贴合你的需求!

第一步:确保字体文件正确加载

先把你的materialdesignicons-webfont.ttf字体文件放到项目的资源目录里(比如Maven项目的src/main/resources/fonts文件夹),然后在CSS文件里导入这个字体:

@font-face {
    font-family: 'Material Design Icons';
    /* 路径要根据你的实际文件位置调整,保证能找到字体文件 */
    src: url('fonts/materialdesignicons-webfont.ttf');
}

第二步:用CSS定义图标样式

接下来可以给需要加图标的控件(比如按钮)定义样式类,想加图标时直接套用就行。比如先写通用的图标样式,再针对不同图标写具体规则:

/* 通用图标样式,统一指定字体和基础样式 */
.mdi-icon {
    -fx-font-family: 'Material Design Icons';
    -fx-font-size: 16px;
    -fx-text-fill: #333;
}

/* 具体的设置图标样式,填入对应图标Unicode字符 */
.mdi-icon.settings {
    -fx-text: "\F013"; /* 这里替换成你需要的图标对应的Unicode值 */
}

第三步:在Java代码里应用样式

之后在Java代码里,给按钮添加上对应的样式类就好,不用再手动创建Label当图形元素了:

Button settingsBtn = new Button("设置");
// 先加通用图标类,再加具体的图标类
settingsBtn.getStyleClass().addAll("mdi-icon", "settings");

另一种灵活方式:单独给按钮图形设置CSS

如果你不想把图标和按钮文本混在一起,只想给按钮的graphic部分加图标,也可以这么写CSS:

.button.with-settings-icon {
    -fx-graphic: new Label();
}

.button.with-settings-icon .label {
    -fx-font-family: 'Material Design Icons';
    -fx-text: "\F013";
}

然后在Java代码里给按钮添加with-settings-icon样式类即可。

这样一来,其他开发者要替换图标时,只需要修改CSS里的-fx-text对应的Unicode值,甚至换字体文件时改一下@font-face的路径就行,完全不用碰Java代码,超方便!

备注:内容来源于stack exchange,提问作者SilverCube

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 09:54:29