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);
}
}