gpt4 book ai didi

java - 使用 JavaFX 设置应用程序图标时出现问题

转载 作者:行者123 更新时间:2023-12-02 02:34:24 31 4
gpt4 key购买 nike

我在使用 JavaFX 更改应用程序图标时遇到问题(代码如下,我的尝试已被注释掉)。我尝试实现以前的堆栈溢出答案中的几种解决方案,但我不确定这些方法现在是否已弃用。我使用的是NetBeans 8.2(图标位于源码包下一个名为images的文件夹中)。

第一次尝试:非法的表达式开始。预期标识符:JavaFX Application Icon

第二次尝试:找不到适合 add(java.awt.Image) 的方法:Changing the icon of my java application

第三次尝试:找不到符号。 Cannot instantiate the type Image java?

第五次尝试:图像是抽象的,无法实例化。 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);
}

}

最佳答案

您需要加载图像并将其添加到舞台的图标中。

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

但是,在 Ubuntu 上这些图标不会显示。这个 JavaFX 缺陷很长时间都没有得到解决。

您的第一次尝试似乎缺少 Image 实例化的 new 关键字,并确保它是 javafx.scene.image.Image,而不是 java.awt.Image 图像,它有一个不同的构造函数。试试这个:

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

关于java - 使用 JavaFX 设置应用程序图标时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46611180/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com