Eva*_*van 7 java javafx java-9
关于 SO 有几个问题,但是由于 JPMS 支持没有任何答案是有效的。
方法 1:(JavaFX - 为整个应用程序设置默认 CSS 样式表)
Application.setUserAgentStylesheet(Application.STYLESHEET_MODENA);
StyleManager.getInstance().addUserAgentStylesheet(getClass().getResource("/style.css").toString());
Run Code Online (Sandbox Code Playgroud)
不起作用,因为StyleManager
成为私有 API 的一部分,JavaFX 不导出它。
方法二:(/sf/answers/3570210591/)
@import "com/sun/javafx/scene/control/skin/modena/modena.css";
/* rest of CSS code */
Run Code Online (Sandbox Code Playgroud)
不起作用,因为modena.css
成为私有 API 的一部分,JavaFX 不导出它。
方法 3:将 CSS 设置为顶部父节点(/sf/answers/2021629501/)
不起作用,因为 CSS 不会应用于模态窗口。
Scene
通过调用的方法将样式表应用到场景getStylesheets()
。这就是我的应用程序在运行时改变整个应用程序外观的方式:
private void applyStylesheets(
final Scene scene, final String internal, final File external ) {
final var stylesheets = scene.getStylesheets();
stylesheets.clear();
stylesheets.add( STYLESHEET_APPLICATION_BASE );
stylesheets.add( STYLESHEET_MARKDOWN );
stylesheets.add( getStylesheet( toFilename( internal ) ) );
try {
if( external != null && external.canRead() && !external.isDirectory() ) {
stylesheets.add( external.toURI().toURL().toString() );
mFileWatchService.register( external );
}
} catch( final Exception ex ) {
clue( ex );
}
}
Run Code Online (Sandbox Code Playgroud)
该代码正在执行以下操作:
Scene
。有关上下文和更多详细信息,请参阅完整的代码片段。
归档时间: |
|
查看次数: |
492 次 |
最近记录: |