Plik jar. nie wyświetla background-image

Plik jar. nie wyświetla background-image
M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
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ę :)

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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

M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
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:

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

moja klasa main wygląda tak:

Kopiuj
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);
    }
}
 
Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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

M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
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 ???

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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.

M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

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

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
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.

M8
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.