Java 右键单击应用程序系统托盘时Swing冻结(如图所示)
右键单击应用程序托盘图标(触发显示托盘弹出菜单)时,swing应用程序冻结。Find old answers(2008)指出,这是因为java调用了一些本机方法来显示它。有没有办法解决这个问题 快速编码如下:Java 右键单击应用程序系统托盘时Swing冻结(如图所示),java,swing,Java,Swing,右键单击应用程序托盘图标(触发显示托盘弹出菜单)时,swing应用程序冻结。Find old answers(2008)指出,这是因为java调用了一些本机方法来显示它。有没有办法解决这个问题 快速编码如下: package test; import java.awt.AWTException; import java.awt.MenuItem; import java.awt.PopupMenu; import java.awt.SystemTray; import java.awt.Tra
package test;
import java.awt.AWTException;
import java.awt.MenuItem;
import java.awt.PopupMenu;
import java.awt.SystemTray;
import java.awt.TrayIcon;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
public class TestApp {
private static JFrame mainFrame;
public static void main(String[] args) {
mainFrame = new JFrame();
mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
start();
}
});
}
private static void start() {
initApp();
SystemTray systemTray;
PopupMenu popupMenu = new PopupMenu();
TrayIcon trayIcon = new TrayIcon(new ImageIcon("C:\\test\\image.png").getImage(), "test", popupMenu);
if (SystemTray.isSupported()) {
systemTray = SystemTray.getSystemTray();
initializePopupMenu(popupMenu);
try {
systemTray.add(trayIcon);
} catch (AWTException e) {
// throw new TrayNotSupportedException("Tray is not supported.");
}
}
}
private static void initializePopupMenu(PopupMenu popupMenu) {
popupMenu.add(new MenuItem("test Item"));
}
private static void initApp() {
JProgressBar progress = new JProgressBar();
progress.setIndeterminate(true);
mainFrame.getContentPane().add(progress);
mainFrame.setSize(400, 400);
mainFrame.setVisible(true);
}
我没有看到(或看到其他人)这个问题,考虑提供一个演示你的问题。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将导致更少的混乱和更好的响应。我的问题与这里报告的类似:。。。我现在正在准备自我体验代码…将发布soonok发布的代码。当托盘项目被显示时,看到进度冻结。@ MadProgrammer同样发生在我修改Oracle的演示应用程序时,因为我没有(或看到其他人)这个问题,考虑提供一个演示您的问题。这不是一个代码转储,而是您正在做的一个示例,它突出了您所遇到的问题。这将导致更少的混乱和更好的响应。我的问题与这里报告的类似:。。。我现在正在准备自我体验代码…将发布soonok发布的代码。请注意,当显示托盘项目时,进度被冻结。当我从中修改Oracle的演示应用程序时,也会发生同样的情况