Plik jar. nie wyświetla background-image

0

Witam.

Piszę program w Intellij Idea za pomocą Scene Builder. Po podłożeniu tła w okienku za pomocą style w SB i uruchomieniu w IntelliJ wszystko działa ok. Gdy utworze plik .jar to program działa ale obrazek, który służy jako tło nie jest wyświetlany.

Plik .jpg i .css mam w oddzielnym folderze img. Plik .jar tworze po przez:
File->Project Structure -> następnie klikam na zielony + wybieram JAR -> From Modules with dependencies -> wybieram swoją Main Class -> Ok
W nowym oknie Klikam Apply a następnie z menu wybieram Build-> Build Artifact.

Powstaje plik .jar, którego jak odpalę to program działa ok. Wszystkie przyciski i okienka działają zgodnie z założonym celem ale w okienku nie jest wyświetlane tło.

Za pomoc z góry wielkie dzięki i przepraszam za gramatykę :)

0

Jeśli ten plik z tłem laduje w jarze to musisz go w aplikacji ładować przez getClass().getResourceAsStream("cośtam"); albo używając jakiejś innej metody z serii getResource

0
Shalom napisał(a):

getClass().getResourceAsStream("cośtam");

To ma być w klasie main czy gdzieś indziej? Cały układ graficzny mam zapisany w pliku sample.fxml
Ja ścieszkę do pliku .jpg man w css:

 .grid-pane{
-fx-background-image: url("Tło.jpg");
}

moja klasa main wygląda tak:

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("Prewencjusz");
        primaryStage.setScene(new Scene(root, 338, 600));
        primaryStage.show();
    }


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

Z tego co widzę to internety sugeruja podać całą ścieżkę względem jara a plik wrzucic do resources czyli np. /com/project/client/resources/image.png

0
Shalom napisał(a):

Z tego co widzę to internety sugeruja podać całą ścieżkę względem jara a plik wrzucic do resources czyli np. /com/project/client/resources/image.png

Tylko że ścieżkę mam podaną w pliku .fxml oraz w .css
Aplikacja jest robiona za pomocą Scene Builder więc on sam sobie pisze plik FXML. Więc nie mam pojęcia dlaczego w intellij działa a tak normalnie jak uruchamiam to nie.
Ewentualnie może coś źle robię przy tworzeniu jara ???

0

Jeśli ścieżka jest taka jaką pokazałeś to nie będzie działać i tyle. Z poziomu intellij działa bo aplikacja jest uruchamiana zupełnie inaczej i pliki są na dysku a nie spakowane do jara. A uroki wszelkich generatorów są takie że nie zawsze to co generują jest poprawne i ma sens.

0

Jak Rozpakowałem jara to są tam umieszczone pliki jpg

0

No brawo, tylko że ściezka kiedy coś odpalasz z wnętrza jara to nie jest nazwa pliku, tylko trzeba ją podać względem classpath.

0

Przesyłam screen z pracy nad aplikacją.
SceneBuilder
SceneBuilder.png
IntelliJ
Intellij main.png
Aplikacja owarta za pomocą intelliJ
aplikacja z intellij.png
Aplikacja otwarta z jara
aplikacja z jara.png

1 użytkowników online, w tym zalogowanych: 0, gości: 1