- Root Project Folder
- /data
- /themes
- /Theme.css
- /src
- sample
- /Main.java
- /Controller.java
- /sample.fxml
我拼凑了一个示例项目来说明我的问题。
main.java:
package sample;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("Hello World");
Scene scene = new Scene(root, 300, 275);
scene.getStylesheets().add(
getClass().getResource("/themes/Theme.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
sample.fxml:
<GridPane fx:controller="sample.Controller"
xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
</GridPane>
Caused by: java.lang.NullPointerException
at sample.Main.start(Main.java:18)
scene.getStylesheets().add("file:///themes/Theme.css");
scene.getStylesheets().add("file:///../themes/Theme.css");
File css = new File("themes/Theme.css");
scene.getStylesheets().add("file:///" + css.getAbsolutePath());
WARNING: Resource "file:////[PATH TO PROJECT]/themes/Theme.css" not found
错误中显示的完整路径完全正确,并指向确实存在的文件。
我该如何排除故障呢?由于它在示例项目中运行良好,但在我较大的项目中却不行,所以问题显然出在我的其他项目代码中的某个地方。
但是为什么编译器会告诉我一个文件不存在,而它明明存在呢?
在@james_d对原始问题的注释之后,我可以使用以下代码来处理这个问题,将字符串转换为URI以获得正确的格式。
我不想将CSS文件捆绑在JAR中,因为我希望我的用户能够自定义这些文件并添加他们自己的文件。
解决方案:
scene.getStylesheets().clear();
File css = new File("themes/" + Settings.getThemeName() + ".css");
System.out.println(css.toString());
File fontFile = new File("themes/Font.css");
scene.getStylesheets().addAll(
css.toURI().toString(),
fontFile.toURI().toString());
当查看JavaFX SceneBuilder时,它能够加载任何类型的FXML。则忽略根节点或控制器。scenebuilder能够加载任何类型的fxml并显示其组件。 有没有人想要一种方法来加载一个fxml,而不考虑其字段的ID、控制器或根节点的类型? 问题是,当我尝试加载任何fxml时,它只能加载,如果我设置了正确的根类型。我想(通过FileChooser)将我能找到的任何FXML加载到(比方说)
我正在尝试集成联邦快递API并得到这个错误。 警告:SoapClient::SoapClient()[SoapClient.SoapClient]:I/O警告:无法加载测试中的外部实体“./wsdl/RateService_v13.wsdl”。php在线12 致命错误:未捕获SoapFault异常:[WSDL]SOAP-ERROR:解析WSDL:无法从'.../wsdl/RateService_v
我在从控制器加载javaFX中的图像时遇到了一些麻烦。 我把一些图像放在src/文件夹中,甚至放在img/文件夹中,但仍然得到“无效URL或未找到资源”。 但我无法检索图像“java.lang.IllegalArgumentException:无效URL或未找到资源” 谢谢你的帮助
问题内容: 是否可以通过内联CSS加载外部字体? 注意:我 不是 在谈论使用带有定义的外部CSS文件,而是类似以下内容: 问题答案: 是否可以使用内嵌CSS加载外部字体?不适用于外部CSS文件[....]。 是的,您可以按照Stephen Scaff的本文中的文章所示对base64字体进行编码,然后将其放到页面的块中,以避免外部请求。 也可以按照您所描述的浏览器是否支持的方式使用此技术。 每个现代
我无法从亚马逊S3桶加载雪花中的外部表。外部表创建成功,但在运行select命令时,不会返回任何内容。奇怪的是COPY into命令对雪花中的同一个表起作用。 谢谢,纳维德
我的Netbeans在早些时候使用jdk 1.8.0.65时工作正常,但由于某些原因,我丢失了数据,我安装了jdk 1.8.0.73,现在我的Netbeans上的每个程序都显示了以下错误: 运行:错误:无法找到或加载主类序列。序列C:\Users\owais\AppData\Local\NetBeans\Cache\8.1\executor snippets\run。xml:53:Java返回:1