JavaFX - 将css文件添加到Maven项目

时间:2018-01-04 16:41:31

标签: 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>

SceneStyle.css

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

编辑: 我使用Intellij,这是项目结构

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

1 个答案:

答案 0 :(得分:1)

如果.css文件在里面,你检查了生成的jar吗?

我将.css放入resourcess

Your application

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