在 OS X 上的 Java swing 中设置默认应用程序图标图像

2024-02-27

我正在尝试设置 Jar 文件的图标图像:

setIconImage(new ImageIcon(getClass().getResource("logo.png")).getImage());

在 Mac OS X 10.7.4 中运行时,出现以下错误:

Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextGetCTM: invalid context 0x0
Jun 28 15:21:40 (my dhcp) java[73383] <Error>: CGContextSetBaseCTM: invalid context 0x0

setIconImage http://docs.oracle.com/javase/1.5.0/docs/api/javax/swing/JFrame.html#setIconImage%28java.awt.Image%29不设置 jar 图标。它将设置最小化窗口的图标JFrame会看起来像。 jar 图标(控制 finder 图标和扩展坞应用程序图标)无法在 jar 文件本身中设置。您只需获得操作系统提供的默认图标即可。你需要使用类似的东西来包裹它打包器 https://developer.apple.com/library/mac/#documentation/Java/Conceptual/Jar_Bundler/About/About.html适用于 OS X 或 Launch4J 适用于 Windows。

您可以在应用程序运行时设置应用程序停靠栏图标,请参阅com.apple.eawt.Application.setDockIconImage https://developer.apple.com/library/mac/documentation/Java/Reference/JavaSE6_AppleExtensionsRef/api/com/apple/eawt/Application.html#setDockIconImage%28java.awt.Image%29。但它并不完美,因为当您双击 jar 时,它会使用通用 java 图标在扩展坞中启动,并且仅在 java 代码开始运行时跳动一两次后才切换到您的自定义图标。另外,我不认为它会为未运行的 jar 设置停靠图标(并不是说您可以将 jar 文件拖到停靠中 - 似乎对我不起作用)。

下面是一些代码,演示了您可以设置的不同图像:

import com.apple.eawt.Application;
import javax.swing.*;

class SetIcon extends JFrame {

    SetIcon() {
        setIconImage(new ImageIcon("doc.png").getImage());
        Application.getApplication().setDockIconImage(
            new ImageIcon("app.png").getImage());
    }

    public static void main(String args[]) {
        SetIcon s = new SetIcon();
        s.setVisible(true);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 OS X 上的 Java swing 中设置默认应用程序图标图像 的相关文章

随机推荐

  • Laravel getQueryLog 显示行查询已执行

    正如标题所说 我想知道是否有办法获得getQueryLog函数显示查询行 var dump DB getQueryLog 你不能这样做getQueryLog 但您可以监听查询 生成回溯并最终提取行号 routes php Event lis
  • 如何从点文件中提取子图

    我有一个由名为egypt的软件生成的点文件 点文件包含许多节点和边 如果我用这个点文件画图 由于节点太多 很难看清图片 而我需要的只是从一个节点开始的子图 不需要全图 有没有办法使用这个点文件从指定节点 例如start node 绘制子图
  • 避免注册表 Wow6432Node 重定向

    我尝试在 c 中使用 Microsoft Win32 RegistryKey 插入一些简单的注册表项 但路径会自动更改为 HKEY LOCAL MACHINE SOFTWARE Test to HKEY LOCAL MACHINE SOFT
  • 通过排列两个变量添加计数器列(dplyr)

    我到处寻找了一段时间 但找不到适合我情况的任何解决方案 我有一个数据框 其中混合有 ID 和 VAR 下面我尝试复制一个示例 require dplyr seed 123 N lt 3 T lt 4 id lt rep letters 1
  • 根据控制器操作切换 Devise 身份验证模块

    我有一个 Rails 站点 使用Devise https github com plataformatec devise用于身份验证 我有一页 PhotosController create 需要在没有 cookie 的情况下对用户进行身份
  • 将 CMake 项目导入 Eclipse CDT

    我有一个土生土长的CMake http en wikipedia org wiki CMake项目 我想使用Eclipse http en wikipedia org wiki Eclipse 28software 29IDE 使用它 通过
  • Codeigniter - 使用多个数据库

    数据库 php db default hostname 192 168 2 104 db default username webuser db default password db default database vad db def
  • 如何在运行时更改 slf4j 级别?

    我使用 SLF4j 作为我的日志框架 由 log4j 支持 我的问题是我正在寻找一种在运行时更改记录器的日志记录级别的方法 据我了解 slf4j 不允许直接通过其自己的 API 执行此操作 因此 我必须直接访问日志记录提供程序 我个人认为这
  • 当 AppBar 下没有滚动内容时如何禁用 AppBar 阴影

    在 app bar dart 文件中提到海拔控制应用栏下方阴影的大小 默认情况下 如果应用栏下方没有滚动内容 则不会绘制阴影 这是我的代码 Scaffold appBar AppBar brightness Brightness light
  • jTemplates:变量中的 html

    我想在 jTemplate 变量中包含一些 html 例如 td class numeric T total price td 其中总价格是 12 span 00 span 有什么方法可以让 span 显示为 html 吗 我得到它 mhi
  • C++ 中的对象序列化

    我想序列化 反序列化一些结构化数据 以便通过网络将其发送char buffer 更准确地说 假设我有一条消息类型struct Message struct Message Header header Address address size
  • 删除月份中某天的前导“0” SimpleDateFormat

    2012年1月4日的 0 可以去掉吗 我目前正在使用以下 Java 来获取日期格式 例如 Monday January 04 2012 我希望它看起来像 Monday January 4 2012 Date anotherCurDate n
  • 使用 cython 简单包装 C 代码

    我有许多 C 函数 我想从 python 调用它们 cython 似乎是可行的方法 但我无法真正找到具体如何完成此操作的示例 我的 C 函数如下所示 void calculate daily char db name int grid id
  • 如何在NodeJS中获取UTC日期对象? [复制]

    这个问题在这里已经有答案了 我想获取 UTC 中的当前日期对象 我尝试使用new Date Date now 等等 但他们返回当地时间 如何获取 UTC 日期对象 我想要 Date 对象 而不是字符串表示形式 只需使用new Date ne
  • Jetpack Compose dev06 setContent() 不起作用?

    更新到 dev06 并运行应用程序时 出现以下错误 java lang NoSuchMethodError No static method setContent Landroid app Activity Lkotlin jvm func
  • Android Spinner:获取所选项目更改事件

    当所选项目发生更改时 如何设置 Spinner 的事件侦听器 基本上我想做的事情与此类似 spinner1 onSelectionChange handleSelectionChange void handleSelectionChange
  • 如何在 Ubuntu 上的 NetBeans 中设置 zend 自动完成

    我在 Ubuntu 11 04 上的 NetBeans 7 1 中设置 Zend 自动完成代码时陷入困境 一点帮助就太好了 我在工具 gt 选项 gt PHP gt Zend中设置 usr bin zf sh 作为 Zend 脚本 按下 注
  • 返回引用与返回值 C++ 之间的区别

    关于为什么有必要从函数返回引用的问题 如果我们替换以下代码 其行为完全相同int with int在第 9 行和第 16 行 在我的示例代码中 返回引用与值并不重要吗 在什么样的例子中它会开始变得重要 在我看来 我们无法返回函数局部变量的引
  • 禁用 iframe 自动调整大小

    我正在使用一个包含 iframe 的网页 iframe 中包含大量数据 每次加载时 其高度都会扩展到其中内容的范围 然而 这使我的页面消失了 是否有办法锁定 iframe 的高度并允许用户滚动浏览内容 嗯 奇怪 你有这个问题的示例链接吗 当
  • 在 OS X 上的 Java swing 中设置默认应用程序图标图像

    我正在尝试设置 Jar 文件的图标图像 setIconImage new ImageIcon getClass getResource logo png getImage 在 Mac OS X 10 7 4 中运行时 出现以下错误 Jun