如何在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
相关产品推荐
相关产品推荐

