我在Scene Builder for Java8中创建了pane
。我的.css
文件存储在/rescouces/css/app.css
中。我在scene builder
中连接样式表,然后就可以了。但是在启动应用程序之后,我得到了错误的异常:导致的原因:javafx.fxml.loadException:无效资源:/../style/app.css not found on the classpath
。
怎么解决这个?我需要每次在.fxml
中重命名路径到css
?
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="912.0" prefWidth="1368.0" styleClass="app" stylesheets="@/style/app.css" xmlns="http://javafx.com/javafx/8.0.172-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="com.mypod.tablet.controller.MainController">
<children>
<AnchorPane fx:id="contentPane" layoutX="248.0" layoutY="138.0" stylesheets="@/style/content.css" AnchorPane.bottomAnchor="94.0" AnchorPane.leftAnchor="250.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="115.0">
<styleClass>
<String fx:value="block" />
<String fx:value="content-block" />
</styleClass>
</AnchorPane>
</children>
</AnchorPane>
加载FXML:
FXMLLoader loader = new FXMLLoader();
this.primaryStage.setScene(new Scene(loader.load(Util.getResource("/fxml/main.fxml"))));
问题所在
为了再现该问题,并根据对该问题的评论,需要:
主类
@Override
public void start(Stage stage) throws Exception {
FXMLLoader loader = new FXMLLoader();
Parent root = loader.load(MainApp.class.getClassLoader().getResourceAsStream("fxml/scene.fxml"));
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.AnchorPane?>
<AnchorPane id="AnchorPane" stylesheets="@../styles/styles.css" prefHeight="200" prefWidth="320" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Button fx:id="button" text="Click Me!" />
</children>
</AnchorPane>
.button {
-fx-font-size: 2em;
}
null/../styles/styles.css
com.sun.javafx.css.StyleManager loadStylesheetUnPrivileged
WARNING: Resource "../styles/styles.css" not found.
stylesheets="@/styles/styles.css"
这是可行的:
FXMLLoader loader = new FXMLLoader();
Parent root = loader.load(MainApp.class.getClassLoader().getResource("fxml/scene.fxml"));
fxmlloader
空构造函数,而是使用静态load
方法。这是可行的:
Parent root = FXMLLoader.load(MainApp.class.getClassLoader().getResource("fxml/scene.fxml"));
Parent root = FXMLLoader.load(MainApp.class.getResource("/fxml/scene.fxml"));
FXMLLoader loader = new FXMLLoader(MainApp.class.getResource("/fxml/scene.fxml"));
// YourController controller = (YourController) loader.getController();
Parent root = loader.load();
我在通过场景构建器将CSS样式表应用到JavaFX应用程序时,在Netbeans中遇到了一个错误。 Netbeans中的错误消息为: null/fxmldocument.css 2014年9月17日上午12:44:43 com.sun.javafx.css.styleManager loadStylesheetUnPrivileged 警告:找不到资源“fxmldocument.css”。 我所做
我运行wmii在linux和在想我自己,如果你可以运行javafx场景生成器从终端?
我使用Scene Builder和Intelij IDEA来构建JavaFX应用程序。当我在scene Builder中预览时,这个场景看起来是正确的,但当我在IntelliJ中执行时,这个场景被放大了1.5倍。在Scene Builder中,舞台是1280x800,但当我运行程序时,它是1920x1200,尽管我设置了1280x800的场景大小。 这似乎是由于Windows10对应用程序进行了缩
我正在使用Intelij Idea在JAVAFX中尝试一个简单的项目,因此我遇到了两个问题: 案例1: 当我将和和放在同一个文件夹: 案例2: 当我将放在文件夹中,并将和文件夹中: 1-SceneBuilder找不到Controller.java 谢谢
通过使用此链接在Eclipse中安装新软件,我已经安装了场景构建器(e(fx)clipse 2.4.0)。我还尝试过使用Eclipse Marketplace进行安装,这两种方法都给了我错误,当我尝试编辑一些东西时,它给了我这个错误: 我已经在我的系统上到处搜索了绝对路径,有些人说它在: 我正在使用: Eclipse 4.6.3 基于Antergos-Arch Linux的发行版
我希望此图表显示在场景生成器上。怎么可能。。??