Java 如何设置JFrame窗口和托盘的图标
我想在窗口中显示我自己的图标,而不是Java cup 当最小化时,我想显示我自己的图像。我怎样才能做到这一点 我应该将图像相对于源文件放置在哪里 [更新] 我试过了,但没有成功Java 如何设置JFrame窗口和托盘的图标,java,swing,Java,Swing,我想在窗口中显示我自己的图标,而不是Java cup 当最小化时,我想显示我自己的图像。我怎样才能做到这一点 我应该将图像相对于源文件放置在哪里 [更新] 我试过了,但没有成功 TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().createImage("image/accounting.gif")); //setIconImage(); SystemTray tray = SystemTray.
TrayIcon trayIcon = new TrayIcon(Toolkit.getDefaultToolkit().createImage("image/accounting.gif"));
//setIconImage();
SystemTray tray = SystemTray.getSystemTray();
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.out.println("TrayIcon could not be added.");
}
我也试过了
TrayIcon trayIcon = new TrayIcon(createImage("images/bulb.gif", "tray icon"));
但严重怀疑createImage(
),即使是对象也不知道导入什么
关于,使用使用关于您的
TrayIcon
问题,您可以参考下面的解决方案:
public static void createSystemTrayIcon() {
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage(
System.getenv("MY_PROGRAM_HOME") + "game.ico"
);
PopupMenu popup = new PopupMenu();
final MenuItem menuExit = new MenuItem("Quit");
MouseListener mouseListener =
new MouseListener() {
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
};
ActionListener exitListener =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
Runtime r = Runtime.getRuntime();
System.out.println("Exiting...");
r.exit(0);
}
};
menuExit.addActionListener(exitListener);
popup.add(menuExit);
final TrayIcon trayIcon = new TrayIcon(image, "My program", popup);
ActionListener actionListener =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
trayIcon.displayMessage(
"My program ",
"version: blahblah",
TrayIcon.MessageType.INFO
);
}
};
trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(actionListener);
trayIcon.addMouseListener(mouseListener);
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println("TrayIcon could not be added.");
}
} else {
// System Tray is not supported
}
}
关于您的
TrayIcon
问题,您可以参考下面的解决方案:
public static void createSystemTrayIcon() {
if (SystemTray.isSupported()) {
SystemTray tray = SystemTray.getSystemTray();
Image image = Toolkit.getDefaultToolkit().getImage(
System.getenv("MY_PROGRAM_HOME") + "game.ico"
);
PopupMenu popup = new PopupMenu();
final MenuItem menuExit = new MenuItem("Quit");
MouseListener mouseListener =
new MouseListener() {
public void mouseClicked(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
};
ActionListener exitListener =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
Runtime r = Runtime.getRuntime();
System.out.println("Exiting...");
r.exit(0);
}
};
menuExit.addActionListener(exitListener);
popup.add(menuExit);
final TrayIcon trayIcon = new TrayIcon(image, "My program", popup);
ActionListener actionListener =
new ActionListener() {
public void actionPerformed(ActionEvent e) {
trayIcon.displayMessage(
"My program ",
"version: blahblah",
TrayIcon.MessageType.INFO
);
}
};
trayIcon.setImageAutoSize(true);
trayIcon.addActionListener(actionListener);
trayIcon.addMouseListener(mouseListener);
try {
tray.add(trayIcon);
} catch (AWTException e) {
System.err.println("TrayIcon could not be added.");
}
} else {
// System Tray is not supported
}
}
使用setIconImage()的示例:(同样适用于setIconImage())
publicmyframe(){
initComponents();//由Netbeans添加
列表图标=新的ArrayList();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/16/app.png”)).getImage();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/32/app.png”)).getImage();
此.setIconImages(图标);
}
线索在于使用“getImage()”以返回图像(因为图像图标不能直接用于setIconImages())。使用setIconImages()的示例:(同样适用于setIconImage())
publicmyframe(){
initComponents();//由Netbeans添加
列表图标=新的ArrayList();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/16/app.png”)).getImage();
添加(新的ImageIcon(getClass().getResource(“/com/example/icons/32/app.png”)).getImage();
此.setIconImages(图标);
}
线索是使用“getImage()”返回图像(因为ImageIcon不能直接在setIconImages()中使用)。我没有写过关于托盘图标的内容,但最后我发现设置jframe图标的主要问题。这是我的代码。它与其他代码类似,但这里有几点需要注意
this.setIconImage(new ImageIcon(getClass().getResource("Icon.png")).getImage());
1) 将此代码放入jframe WindowOpen事件中
2) 将图像放在主文件夹中,在主文件夹中创建所有表单和java文件,例如
src\ myproject\ myFrame.form
src\ myproject\ myFrame.java
src\ myproject\ OtherFrame.form
src\ myproject\ OtherFrame.java
src\ myproject\ Icon.png
3) 最重要的是,文件名区分大小写,即icon.png不起作用,但icon.png起作用
这样,即使在最终构建项目之后,您的图标也会出现。我还没有写过关于托盘图标的内容,但最终我发现了设置jframe图标的主要问题。这是我的密码。它与其他代码类似,但这里有一些事情需要注意的游戏
this.setIconImage(new ImageIcon(getClass().getResource("Icon.png")).getImage());
1) 将此代码放入jframe WindowOpen事件中
2) 将图像放在主文件夹中,在主文件夹中创建所有表单和java文件,例如
src\ myproject\ myFrame.form
src\ myproject\ myFrame.java
src\ myproject\ OtherFrame.form
src\ myproject\ OtherFrame.java
src\ myproject\ Icon.png
3) 最重要的是,文件名区分大小写,即icon.png不起作用,但icon.png起作用
这样,即使在最终构建项目后,您的图标也会出现。请提供一个托盘图标的示例。习惯阅读API文档,它包含所有必要的信息。现在我不知道为
TrayIcon
导入什么,请您提供一个带有托盘图标的示例。习惯于阅读API文档,它包含所有必要的信息。现在我不知道为TrayIcon
导入什么