2017-08-21 4 views
1

Lorsque j'essaie d'exécuter mon programme Java extrait/compilé, je peux voir les images car elles sont stockées sur mon PC et traitées dans le code depuis mon PC. Mais quand j'essaie le même programme sur un autre PC, les images/arrière-plans sont partis. Comment stocker des images dans le code java pendant que je les appelle d'un dis k dans ImageView afin qu'elles soient également visibles sur d'autres systèmes? J'utilise JavaFX et FXML, CSS.Comment faire pour que Java enregistre mon image d'arrière-plan dans un programme java compilé et extrait?

+0

les Ajouter au fichier JAR, en les déplaçant vers le CLASSPATH, et utiliser un 'ClassLoader' pour les ouvrir à l'exécution ... –

+0

Voulez-vous dire que je devrais les passer au même paquet où mon les cours sont? Deuxième partie que j'ai comprise, les exécutant dans la classe principale proche des codes racine. Désolé, je viens de commencer avec Java. –

Répondre

0

Vous pouvez regrouper vos images avec le programme java à l'aide de deux façons:

1) les mettre dans votre pot - créer un package nommé par exemple. « Images » et ajoutez les images là-bas, puis le charger en utilisant

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

2) les mettre dans le même dossier que votre pot et de les charger avec:

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

Pour vous Le meilleur moyen est probablement le # 1 parce que vous aurez juste un pot - il est plus facile de copier un tel pot et plus difficile à altérer les images.

0

Je l'ai fait comme ça. Merci!

@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

Salut, si cela représente la bonne solution à votre problème, s'il vous plaît envisager de marquer comme la réponse acceptée pour référence future – fantaghirocco