Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 右键单击应用程序系统托盘时Swing冻结(如图所示)_Java_Swing - Fatal编程技术网

Java 右键单击应用程序系统托盘时Swing冻结(如图所示)

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

右键单击应用程序托盘图标(触发显示托盘弹出菜单)时,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.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的演示应用程序时,也会发生同样的情况