当前位置: 首页 > 知识库问答 >
问题:

使用JavaFX设置应用程序图标时出现故障

蒋岳
2023-03-14

第三次尝试:找不到符号。无法实例化类型Image java?

第五次尝试:图像是抽象的,不能实例化。http://docs.oracle.com/javafx/2/deployment/self-continu-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);
    }

}

共有1个答案

杨安歌
2023-03-14

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

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

然而,在Ubuntu上,这些图标并不显示。这个JavaFX缺陷已经很久没有得到解决了。

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

stage.getIcons().add(new Image(JavaFXApplication1.class.getResource( "/images/fiji.png" ).toExternalForm());
 类似资料:
  • 我正在为windows编程JavaFX应用程序,并希望在这些情况下看到应用程序图标 快捷图标(在桌面上,windows开始菜单上) 任务栏图标(即使应用程序固定在任务栏上) (可选).exe-图标 下面的代码似乎很好地完成了它的工作,但是当应用程序运行时,我右按任务栏选择“pin this program”,默认的咖啡杯又会显示出来。当右键单击任务栏项时,杯子就会显示出来-.- 编辑:越来越傻了…

  • 是否可以使用JavaFX更改应用程序图标,还是必须使用Swing来完成?

  • 所以我使用IntelliJ,并使用JavaFX构建了我的应用程序。但当我开始我的主要工作时: 我得到以下错误,我不知道这些错误来自哪里。。。在我切换github上的分支并重新设置所有配置之前,一切都很正常。。。 我得到的错误:

  • 或者 我还尝试在没有文件的情况下实现这一点,结果成功了。 如何添加带有文件的应用程序图标?

  • 当我从Netbeans运行项目时,它工作正常:图标出现在窗口的左上角和任务栏中。图像位于项目的根目录中。 当我清理和构建项目时,它生成两个安装程序:一个exe和一个MSI;当我安装应用程序并打开它时,窗口没有图标sicadcam.png,它有默认的java徽标图标。

  • 如何设置电子应用程序的应用程序图标? 我正在尝试