凯特梦阮_KTMR 2024-02-19 15:53 采纳率: 0%
浏览 2

Java图标无法更改默认图标,怎么办?

-KtsFrame.java-

package ui;

import java.awt.MediaTracker;
import java.awt.Image;

import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class KtsFrame extends JFrame{
    /**
     * 关于游戏窗体的一个类
     */
    private static final long serialVersionUID = 1L;

    public KtsFrame() throws IOException{
        setTitle("ProSystem For Java");
        setSize(500, 500);
        
        
        setLocationRelativeTo(null);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    
    public static void main(String[]args) throws IOException {
        KtsFrame frame = new KtsFrame();
        KtsPanel panel = new KtsPanel();
        Image icon=(new ImageIcon("src/img/ProSystem.ico")).getImage();
        frame.setIconImage(icon);
        frame.add(panel);
        frame.setVisible(true);
    }
}

-KtsPanel.java-

package ui;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.swing.JPanel;

public class KtsPanel extends JPanel {
    /**
     * 关于游戏面板的一个类
     */
    private BufferedImage bg;
    private static final long serialVersionUID = 1L;
    public KtsPanel() throws IOException {
        setBackground(Color.gray);
        try {
            bg = KtsApp.getImg("/img/右上角地图.png");
            
        }
        catch(IOException e) {
            e.printStackTrace();
        }
    }
    
    @Override
    public void paint(Graphics g) {
        super.paint(g);
        g.drawImage(bg, 0, 0, 500, 500,null);
    }
    
}

-KtsApp.java-

package ui;

import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;

public class KtsApp {
    public static BufferedImage getImg(String path) throws IOException {
        try {
            BufferedImage img = ImageIO.read(KtsApp.class.getResource(path));
            return img;
        } 
        catch (IOException e) {
            e.printStackTrace();
        } 
        return null;
    }
}

这些出现了程序图标无法设置的问题,我尝试了使用各种类型的图标,但是却仍然还是无法更改默认图标,我实在是无能为力了,在这里我会征集广码友的建议的。

  • 写回答

2条回答 默认 最新

  • GISer Liu 2024-02-19 16:54
    关注

    该回答引用自GPT-3.5,由博主GIS_Liu编写:

    首先,要确保你的图标文件路径是正确的。在你的代码中,你使用了相对路径 "src/img/ProSystem.ico" 来指定图标文件。确保你的项目结构中存在 src 目录,并且在 src 目录下有 img 目录,并且 ProSystem.ico 文件在其中。

    其次,如果你的图标文件是 .ico 格式,有时候会出现兼容性问题。尝试将图标文件转换成其他格式,如 .png.jpg,然后再试一次。

    另外,你可以尝试使用绝对路径来指定图标文件的位置,以确保程序可以准确地找到它。例如,你可以使用类路径来加载图标文件,像这样:

    Image icon = (new ImageIcon(KtsApp.class.getResource("/img/ProSystem.ico"))).getImage();
    

    这将会从项目的根目录下的 img 文件夹中加载 ProSystem.ico 文件。

    最后,如果你仍然遇到问题,可以尝试在加载图标时捕获异常并打印出来,看看是否有任何异常被抛出,以便更好地定位问题所在。

    希望这些建议能够帮助你解决问题!

    img

    如果该回答解决了您的问题,请采纳!如果没有,请详述问题所在!

    评论

报告相同问题?

问题事件

  • 创建了问题 2月19日

悬赏问题

  • ¥15 使用ESP8266连接阿里云出现问题
  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角