2017-08-21 2 views
1

Wenn ich versuche, mein extrahiertes/kompiliertes Java-Programm auszuführen, kann ich Bilder sehen, weil sie auf meinem PC gespeichert sind und im Code von meinem PC aus adressiert sind. Aber wenn ich das gleiche Programm auf einem anderen PC versuche, sind Bilder/Hintergründe weg. Wie kann ich Bilder in Java-Code speichern, während ich sie von einem Dis in ImageView anrufe, damit sie auch auf anderen Systemen angezeigt werden können? Ich benutze JavaFX und FXML, CSS.Wie kann Java mein Hintergrundbild im extrahierten kompilierten Java-Programm speichern?

+0

Fügen Sie sie zu der JAR-Datei, indem Sie sie in den CLASSPATH zu bewegen, und verwenden Sie einen 'ClassLoader' sie zur Laufzeit öffnen ... –

+0

Wollen Sie damit sagen, ich sollte sie auf das gleiche Paket bewegen, wo meine Klassen sind? Der zweite Teil habe ich verstanden, indem ich sie in der Hauptklasse in der Nähe der Wurzelcodes geführt habe. Tut mir leid, ich habe gerade mit Java angefangen. –

Antwort

0

Sie können Ihre Bilder mit Java-Programm mit zwei Möglichkeiten bündeln:

1) setzen sie in Ihrem jar - erstellen Sie ein Paket mit dem Namen zB. „Bilder“ und die Bilder hinzufügen, dort, dann ist es

BufferedImage img = ImageIO.read(getClass().getResourceAsStream("/images/image.jpg"));

2) mit ihnen laden setzen in auf den gleichen Ordner wie Glas und laden sie mit:

BufferedImage img = ImageIO.read(new File("image.jpg"));

Für Sie Der beste Weg ist wahrscheinlich die # 1, weil Sie nur ein Glas bekommen - es ist einfacher, ein solches Glas zu kopieren und schwieriger, die Bilder zu manipulieren.

0

Ich habe es so gemacht. Vielen Dank!

@Override 
public void start(Stage stage) throws Exception 
{ 
    Parent root = FXMLLoader.load(getClass().getResource("/grafika.fxml"));  
    Scene scene = new Scene(root); 
    scene.getStylesheets().add("/application.css"); 

    Image picture1 = new Image("/kava.jpg");         
    ImageView slika1 = new ImageView(picture1); 
    slika1.setImage(picture1); 

    stage.setScene(scene);              
    stage.setMaxHeight(530); 
    stage.setMaxWidth(800); 
    stage.setResizable(false); 
    stage.show(); 
} 
+0

Hallo, wenn dies die richtige Lösung für Ihr Problem darstellt, denken Sie bitte daran, es als akzeptierte Antwort für zukünftige Referenz zu markieren – fantaghirocco

Verwandte Themen