- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了一个小问题,由于某些奇怪的原因我似乎无法解决。
我很难理解为什么我尝试使用自定义任务栏图标而不是默认的 java Logo ,因为我的程序图标不起作用。
本质上,我的程序从包含 JFrame 的 JDesktopPane 开始,单击 JFrame 上的按钮,JFrame 就会调用 JInternalFrame。
从下面的代码中,您会注意到这是我尝试设置任务栏图标的方式:
java.net.URL resource = getClass().getClassLoader().getResource("systrayicon.jpg");
Image image = Toolkit.getDefaultToolkit().getImage(resource);
TestJDesktopPaneFrame.setIconImage(image);
您会注意到,通过使用 getClass().getClassLoader().getResource("systrayicon.jpg") 我正在从以下路径文件访问我打算用作任务栏图标的图像:/C:/Users/WorkPC/Documents/TEST/bin/systrayicon.jpg
我已经使用了 getClass().getClassLoader().getResource("") 无数次,它对我来说效果很好,例如在我用来调用 JInternalFrame 的按钮中,我使用 getClass().getClassLoader().getResource("") 来访问按钮的自定义图像。
下面是我的完整代码:
package bge.applcs.dsa;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.io.IOException;
import javax.swing.*;
public class TestJDesktopPane extends JDesktopPane {
public static TestJDesktopPane TestJDesktopPane;
public static JFrame TestJDesktopPaneFrame = new JFrame("");
public JButton btnJIFrame;
public TestJDesktopPane() throws IOException {
createPanel();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
showFrame();
}
});
}
public static void showFrame() {
try {
TestJDesktopPane = new TestJDesktopPane();
} catch (IOException e1) {
e1.printStackTrace();
}
TestJDesktopPaneFrame.setContentPane(TestJDesktopPane);
TestJDesktopPaneFrame.setUndecorated(true);
MoveMouseListener mml = new MoveMouseListener(TestJDesktopPane);
TestJDesktopPane.addMouseListener(mml);
TestJDesktopPane.addMouseMotionListener(mml);
TestJDesktopPaneFrame.pack();
TestJDesktopPaneFrame.setVisible(true);
TestJDesktopPaneFrame.setResizable(false);
TestJDesktopPaneFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
TestJDesktopPaneFrame.setLocationRelativeTo(null);
TestJDesktopPaneFrame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0),
"Cancel");
TestJDesktopPaneFrame.getRootPane().getActionMap().put("Cancel", new AbstractAction(){
public void actionPerformed(ActionEvent x) {
System.exit(0);
}
});
}
public void createPanel() {
setLayout(null);
setPreferredSize(new Dimension(1000, 300));
java.net.URL resource = getClass().getClassLoader().getResource("systrayicon.jpg");
Image image = Toolkit.getDefaultToolkit().getImage(resource);
TestJDesktopPaneFrame.setIconImage(image);
// ****************************** Minimize button ******************************
// Prepare images
ImageIcon btnJIFrameNonRollover = new ImageIcon((getClass().getClassLoader().getResource("btnjiframe.jpg")));
ImageIcon btnJIFrameRollover = new ImageIcon((getClass().getClassLoader().getResource("btnjiframerollover.jpg")));
// Create custom button
btnJIFrame = new JButton(btnJIFrameNonRollover);
btnJIFrame.setBorder(null);
btnJIFrame.setContentAreaFilled(false);
btnJIFrame.setBorderPainted(false);
btnJIFrame.setFocusPainted(false);
btnJIFrame.setBounds(100,100,100,100);
btnJIFrame.setRolloverIcon(btnJIFrameRollover);
btnJIFrame.setCursor(new Cursor(Cursor.HAND_CURSOR));
btnJIFrame.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JInternalFrame logInJIFrame = new JInternalFrame();
add(logInJIFrame);
}
});
//
add(btnJIFrame);
}
}
编辑:
我尝试了以下操作,但收到错误:
//
java.net.URL resource = getClass().getClassLoader().getResource("/images/systrayicon.jpg");
Image image = Toolkit.getDefaultToolkit().getImage(resource);
signInDesktopPaneFrame.setIconImage(image);
错误如下:
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(Unknown Source)
at sun.awt.image.URLImageSource.getDecoder(Unknown Source)
at sun.awt.image.InputStreamImageSource.doFetch(Unknown Source)
at sun.awt.image.ImageFetcher.fetchloop(Unknown Source)
at sun.awt.image.ImageFetcher.run(Unknown Source)
感谢您的任何建议。
最佳答案
getResource 方法使类加载器在程序类路径中的目录和 JAR 文件中查找图像,因此它应该位于您的 jar 中或类路径中的其他 jar 中
http://docs.oracle.com/javase/tutorial/uiswing/components/icon.html#getresource
我建议您在 src 文件夹中创建图像文件夹,然后将图像移至此处
然后您可以指定文件夹名称/图像名称来访问它:
ImageIcon icon = ImageIcon(this.getClass().getResource("/images/filename.png"));
或者您可以使用:
ImageIcon icon = ImageIcon(this.getClass().getClassLoader().getResource("images/filename.png"));
它们都将从类路径的根目录开始
关于java - Swing - 无法将默认任务栏图标更改为自定义图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24288686/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 4 年前。
我们有一个应用程序,它显示一个小的“总在最上面”窗口。一般来说,这工作得很好。与其他应用程序一样,当它处于事件状态时,任务栏将其显示为已选中。 现在将幻灯片模式下的 PowerPoint 添加到组合中
我刚刚用 java-swing 为我写了一个桌面时钟,我希望每次登录时该时钟都运行。 为此,我将我的 jar 文件添加到 start 文件夹,我让时钟开始运行。 但我的问题是 - 任务栏中显示的图标允
有谁知道如何在任务栏中为程序设置自定义图标? 我知道您可以创建程序的快捷方式,以便在程序的左上角获取您想要的任何图标(引用下图),但如何让程序在任务栏中获取新图标? 最佳答案 任务栏中显示的图标是可执
我想知道任何类型的 API 或解决方法(例如脚本或注册表),以将 Windows 任务栏移动(或调整大小)到另一个位置,包括另一个显示器(如果是双显示器)。当然,我们可以使用鼠标移动任务栏,但我想通过
如标题所示,是否有任何 Win32 API 可以做到这一点? 最佳答案 不要这样做。 我 99% 确信没有官方 API,这与没有 programmatic access to the old Star
我正在编写一个小程序来解决与 16 位程序的兼容性问题。此修复是关闭 explorer.exe,因为 explorer 会覆盖程序中的某些调色板。之后,我们重新打开资源管理器。 当使用 .bat 文件
Windows 7 任务栏按钮绘制在阴影背景上。颜色阴影以某种方式对鼠标在按钮上的位置使用react。 我想在我的应用程序中使用这样的按钮。我该怎么做? 最佳答案 也许试试 绘制主题背景 http:/
我正在尝试创建一个由在一个窗口中运行的选项卡(而不是浏览器选项卡)组成的任务栏。 我需要跟踪每个选项卡中发生的事情,每个选项卡都有单独的面包屑。(为此,我想也许在每个选项卡的浏览器中使用一个 cook
我创建了没有任务栏的 WinCE 6.0 镜像。所以所有应用程序都最大化到全屏。我想创建自己的应用程序,如任务栏。我只想向这个任务栏添加几个按钮。但我希望其他处于最大化模式的应用程序不要隐藏此任务栏。
我是中级 jquery 经验,所以我需要一个很棒的界面演示的帮助: Demo 但我不知道为什么它不拖到具有相同 ID 的“#drophere”的其他 div。请让它像 Windows 任务栏一样工作。
我正在使用 JFrame 为桌面应用程序创建 GUI。我使用此代码根据平台屏幕的分辨率设置的 GUI 的大小。 this.setSize(this.getToolkit().getScreenSize
首先,我知道 SO 中有一个类似措辞的问题,但没有得到正确回答,围绕它的大部分讨论都落在了“你不应该那样做”上。 所以让我们从基础开始。为什么需要这个。 我在一家公司工作,该公司向我们的员工分发了几十
我想弄清楚如何在任务栏上显示进度。通过 PowerShell。 据我了解,我应该使用这样的东西: $Progress = [System.Windows.Shell.TaskbarItemInfo]:
是否可以从 Win7 任务栏捕获“实时”缩略图?我想在我的应用程序中显示此预览(另一个窗口的),但如何使用 .NET 提取这些预览? 最佳答案 是的。 MSDN Magazine explains h
我想在 C# 中模拟类似于 Windows 任务栏的东西。我想要一个表格底部的栏(我的意思是主表格)。当我打开新表格时,表格名称放在栏上,当我打开另一个新表格时,新表格名称放在栏上......另一方面
我使用 tabcontrols 创建了一个任务栏,它的工作方式与 Windows 任务栏类似。我想让我自己的任务栏固定在窗口的顶部。 它不应该是可移动的、可调整大小的,并且应该“停靠”到顶部。 最佳答
我们有一个主应用程序,它加载了几个插件,这些插件有自己的图标和子窗口。 问题出在 Windows 7 中,任务栏中的图标始终是主应用程序的图标,即使在子窗口中也是如此。但是,Alt+Tab 菜单会显示
我想为 Windows 制作一个二进制时钟。但我希望它替换默认时钟(有 2 个时钟不是最佳选择)。 因此,其中一种方法就是在旧时钟之上绘制我的二进制时钟。我怎么做?允许使用外部库。 我试过这样的东西:
为了简洁起见:我正在尝试实现 this使用 wxPython,但我正在努力将该代码放入基于 wxPython 的脚本中。 我的简单 PyQt 测试代码运行良好。这是: from PyQt4 impor
我是一名优秀的程序员,十分优秀!