【问题标题】:Java JFrame setImageIcon image from URL not working来自 URL 的 Java JFrame setImageIcon 图像不起作用
【发布时间】:2023-03-15 20:15:01
【问题描述】:

所以默认情况下我没有在窗口框架上放置图像,我希望在我的应用程序运行时添加一个放置在框架角落的图像。我浏览了论坛,看到了一堆对我没有帮助的解决方案。我的程序运行没有错误,但图像没有显示。但是当程序在 linux 中运行时,当我专注于我的应用程序时,主导航栏(顶部)确实设置了图像,但这在 MacOS 中不会发生.

我的代码:

        JFrame frame = new JFrame();
        JPanel panel = new JPanel();
        Image image = null;
        URL url = null;
        try {
            url = new URL("https://www.multivutech.com/images/logo1.png");
            image = ImageIO.read(url);
        } catch (MalformedURLException ex) {
            System.out.println("Malformed URL");
        } catch (IOException iox) {
            System.out.println("Can not load file");
        }
        
        panel.setBorder(BorderFactory.createEmptyBorder(30, 30, 10, 30));
        panel.setLayout(new FlowLayout());
        frame.getContentPane().add(panel, BorderLayout.CENTER);
        JLabel label = new JLabel("Hello World!", SwingConstants.CENTER);
        panel.add(label);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Hello World Frame!");
        frame.setIconImage(image);
        frame.pack();
        frame.setVisible(true);
        frame.setSize(354, 279);

【问题讨论】:

  • Windows 工作正常,但 .png 作为徽标不好。

标签: java eclipse swing jframe


【解决方案1】:

它在 mac 上不起作用的原因是 Frame 不显示图标。

如果你添加这个,那么你可以改变 Dock 中显示的图标:

Taskbar.getTaskbar().setIconImage(image);

这是一个基于您的代码的示例。

import java.awt.*;
import java.net.*;

import javax.imageio.ImageIO;
import javax.swing.*;

public class JFrameImageIconDemo {
    public static void main(String[] args) throws Exception {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setTitle("Hello World Frame!");
        frame.setSize(354, 279);

        URL url = new URL("https://www.multivutech.com/images/logo1.png");
        Image image = ImageIO.read(url);
        Taskbar.getTaskbar().setIconImage(image);
        frame.setIconImage(image);
        
        frame.setVisible(true);
    }
}

【讨论】:

  • 非常感谢您的回复,不知道ubuntu框架是否显示图标?因为它也没有在那里显示,但它确实显示在码头上,所以我认为 .png 没问题。
  • 我没有安装 Ubuntu 来测试它,但也许这会有所帮助:stackoverflow.com/questions/13979754/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-08
  • 2022-06-29
  • 2017-04-29
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多