JavaFX - 将 css 文件添加到 Maven 元素

标签 java css maven javafx

我刚开始在 javafx 中编写我的第一个简单的 gui,我正在尝试将 css 文件添加到 javafx 应用程序。当它不是 maven 元素时它工作正常。当涉及到 Maven 时,它找不到文件。我也试过将整个路径复制到文件,但没有区别。

我还使用了 scene.getStylesheets().add("SceneStyle.css"); 但这只是另一个错误。

我也很感激所有关于设计的意见。将所有场景包含在 1 个类中是否可以,还是应该将其划分为更多文件?如果是这样,他们之间如何沟通。

主窗口

public class MainWindow extends Application
{
private Stage window;
private MenuBar menuBar;

private BorderPane mainLayout;
private VBox entryLayout;
private HBox lobbyLayout;


public static void main(String[] args)
{
    launch(args);
}

public void start (Stage primaryStage) throws Exception
{
    window = primaryStage;

    mainLayout = new BorderPane();

    prepareMenuBar();
    mainLayout.setTop(menuBar);
    BorderPane.setMargin(menuBar,new Insets(0,0,20,0));

    prepareEntryLayout();
    mainLayout.setCenter(entryLayout);

    Scene scene = new Scene(mainLayout,300,200);
    scene.getStylesheets().add(getClass().getResource("SceneStyle.css").toExternalForm());


    window.setScene(scene);
    window.show();
}

private void prepareMenuBar()
{
    menuBar = new MenuBar();
    Menu options, gameRules, info;

    options = new Menu("Opcje");
    MenuItem display = new MenuItem("Wyświetlanie");
    MenuItem connection = new MenuItem("Połączenie");
    options.getItems().addAll(display,connection);

    gameRules = new Menu("Zasady Gry");
    info = new Menu("Info");

    menuBar.getMenus().addAll(options, gameRules, info);
}

private void prepareEntryLayout()
{
    entryLayout = new VBox();
    Label nicknameLabel = new Label("Pseudonim :");
    TextField userInput = new TextField();
    Button nextScene = new Button("nextScene");

    Board b = new Board();
    b.createPieces();

    nextScene.setOnAction(e -> {
        mainLayout.setCenter(boardPrint(b));
    });

    entryLayout.getChildren().addAll(nicknameLabel, userInput, nextScene);

}
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>pl.chinesecheckers.client</groupId>
    <artifactId>client</artifactId>
    <version>1.0-SNAPSHOT</version>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>RELEASE</version>
        </dependency>
    </dependencies>

</project>

场景样式.css

.root {
    -fx-background-color: #FFF8DC;
}

编辑: 我正在使用 Intellij,这是元素结构

-src
--main
---java
----GUI
-----MainWindow.java
-----SceneStyle.css
-pom.xml

最佳答案

如果 .css 文件在里面,您是否检查了生成的 jar?

我将 .css 放在 resources 中

Your application

理想的是为每个场景创建一个类,但如果一个类中需要多个类,我不明白为什么不这样做。

关于JavaFX - 将 css 文件添加到 Maven 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48099769/

相关文章:

java - LinkedList - 循环不工作 - Java

Chrome 中的 css 反转过滤器

javascript - Chrome 和 FF 错误的窗口高度

java - 如何使用 Heroku eclipse 插件?遇到错误

eclipse - 什么是 p2 存储库?

java - 将 GUI 链接到主类

java - AppEngine - 列表字段上的 JDO 查询

java - 在给定其他先验概率的情况下估计概率

php - 拼接 css 文件并即时缩小

java - 如何获取 Maven Artifact 的文件路径?