有以下结构:
接下来,我想为创建的MenuBar分配一个新样式。
我正在尝试这样做:
//
MenuBar menuBar = new MenuBar();
new DoBlackMenuBar(menuBar);
// здесь ошибок нет
DoBlack菜单栏
public class DoBlackMenuBar {
public DoBlackMenuBar(MenuBar node) {
node.getStylesheets().add(
getClass().getResource("menuBar.css").toString());
//Здесь getResourse возвращает null
}
}
请告诉我我做错了什么。我假设我错误地编写了 getResourse() 的路径,尽管 css 文件位于资源 (IDE) 标签中。
任何节点如何分配自己的 css 样式,避免在一个文件中包含数千行?

我将立即进行预订,这并不适用于所有内容,例如,收集器
spring boot或javafx忽略包中的资源并从特殊目录中获取它们,该目录resources是资源的根目录。假设有资源
src/main/java/example/cat/cat.png和两个班
src/main/java/example/cat/Cat.javasrc/main/java/example/dog/Dog.java如果我们要获取一个
cat.png类中Cat.java的图像(并且图像和类在同一个包中),那么我们应该这样做:getClass().getResource("cat.png"),字面意思是Cat.class.getResource("./cat.png"),其中./表示包example.cat。如果我们想
cat.png在一个类中获取图像Dog.java(并且图像和类不再在同一个包中),那么我们必须指定资源的绝对路径:getClass().getResource("/example/cat/cat.png"),这将意味着Dog.class.getResource("/example/cat/cat.png").dog或 package引用 package的相对路径cat:Dog.class.getResource("../cat/cat.png")顺便说一句,是的,您可能已经注意到,有一个构造
getClass().getResource(...),getClass()它接收当前对象Cat.class.getResource()的类,并且明确指定了类,因此从类中调用这两个表达式Dog:将获得完全不同的资源。并且在哪里调用
getClass()它根本不重要,在构造函数、方法或静态方法中。它总是返回调用它的类:具体来说,在您的情况下,资源位于一个单独的目录
resources中,即根目录,即 所有资源都位于路径上/menuBar.css,/menuSide.css依此类推。但是当被调用时,getClass().getResource("menuBar.css")资源会沿着路径搜索,相对于 classDoBlackMenuBar,即:/setSomethingtoGUI/DoBlackMenuBar/menuBar.css