2017-10-06 3 views
0

Je n'arrive pas à changer l'icône de l'application avec JavaFX (le code ci-dessous montre mes tentatives). J'ai essayé d'implémenter plusieurs solutions à partir de réponses de débordement de pile précédentes, mais je ne suis pas sûr que ces méthodes soient désormais obsolètes. J'utilise NetBeans 8.2 (et l'icône est dans un dossier appelé images sous le paquet source).Problème lors de la définition de l'icône de l'application avec JavaFX

1ère tentative: Début d'expression illégal. Identifiant prévu: JavaFX Application Icon

2ème tentative: Aucune méthode appropriée trouvée pour ajouter (java.awt.Image): Changing the icon of my java application

3ème tentative: Impossible de trouver le symbole. Cannot instantiate the type Image java?

5ème tentative: l'image est abstraite et ne peut pas être instanciée. http://docs.oracle.com/javafx/2/deployment/self-contained-packaging.htm

package javafxapplication1; 

import java.awt.Image; 
import javafx.application.Application; 
import javafx.fxml.FXMLLoader; 
import javafx.scene.Parent; 
import javafx.scene.Scene; 
import javafx.stage.Stage; 
import javafx.stage.StageStyle; 

import javafx.event.EventHandler; 
import javafx.scene.input.MouseEvent; 
import javax.imageio.ImageIO; 


public class JavaFXApplication1 extends Application { 
    private double xOffset = 0; 
    private double yOffset = 0; 


    @Override 
    public void start(Stage stage) throws Exception { 

     //stage.getIcons().add(Image(<JavaFXApplication1>.class.getResourceAsStream("/images/fiji.png")); 

     Image i = ImageIO.read(getClass().getResource("/images/fiji.png")); 
     //setIconImage(i); 
     //stage.getIcons().add(i); 

     //stage.getIcons().add(Image("/images/fiji.png")); 

     // stage.getIcons().add(ImageIO.read(getClass().getResource("/images/fiji.png"))); 

     //stage.getIcons().add(new Image(this.getClass().getResourceAsStream("/images/fiji.png"))); 

     Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml")); 
     //stage.initStyle(StageStyle.UNDECORATED); 
     // makes it moveble 
     // LOOK INTO!!!!!!!!!!! 
     root.setOnMousePressed(new EventHandler<MouseEvent>() { 
      @Override 
      public void handle(MouseEvent event) { 
       xOffset = event.getSceneX(); 
       yOffset = event.getSceneY(); 
      } 
     }); 
     root.setOnMouseDragged(new EventHandler<MouseEvent>() { 
      @Override 
      public void handle(MouseEvent event) { 
      stage.setX(event.getScreenX() - xOffset); 
      stage.setY(event.getScreenY() - yOffset); 
      } 
     });   
     Scene scene = new Scene(root); 

     stage.setScene(scene); 
     stage.show(); 
    } 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     launch(args); 
    } 

} 

Répondre

0

Vous devez charger une image et l'ajouter aux icônes de la scène.

import javafx.scene.image.Image; 
Image icon = new Image(Controller.class.getResource("/game.png").toExternalForm(), false); 
primaryStage.getIcons().add(icon); 

Cependant, sur Ubuntu, ces icônes ne s'affichent pas. Ce défaut JavaFX n'a ​​pas été résolu depuis longtemps.

Il semble que votre première tentative manque le nouveau mot-clé pour l'instanciation de l'image, et assurez-vous qu'il est un javafx.scene.image.Image, pas une image java.awt.Image, qui a un constructeur différent. Essayez ceci:

stage.getIcons().add(new Image(JavaFXApplication1.class.getResource("/images/fiji.png").toExternalForm());