代码之家  ›  专栏  ›  技术社区  ›  Vitalij Kornijenko

如何在任务栏中设置JFrame警报?

  •  7
  • Vitalij Kornijenko  · 技术社区  · 12 年前

    我想知道Java或JFrame是否可以在程序中发生错误时提醒用户。例如,当您在Skype中收到新消息时,Skype图标背景将变为黄色。 "You have received a new message!"

    我可以用Java做这个吗?

    1 回复  |  直到 12 年前
        1
  •  5
  •   Braj    12 年前

    至少可以通过调用 JFrame#setIconImage() 方法,看起来像一个通知,如果需要还可以更改标题。

    当有任何通知时,创建一个您想要显示的图标,并根据需要从代码中设置图标。


    若要创建光晕(眨眼)效果,可以使用两个图像,并在最小化形式的窗口中使用 Swing Timer 当车窗再次除冰时停止计时器。

    阅读更多信息 How to Use Swing Timers

    示例代码:

    private boolean swap;
    private Timer timer;
    
    ....
    
    final Image onImage = new ImageIcon(ImageIO.read(new File("resources/1.png"))).getImage();
    final Image offImage = new ImageIcon(ImageIO.read(new File("resources/2.png"))).getImage();
    
    // interval of 500 milli-seconds
    timer = new Timer(500, new ActionListener() {
    
        @Override
        public void actionPerformed(ActionEvent arg0) {
            if (swap) {
                setIconImage(onImage);
            } else {
                setIconImage(offImage);
            }
            swap = !swap;
        }
    });
    timer.setRepeats(true);
    
    // check whether window is in ICONIFIED state or not
    if (getExtendedState() == JFrame.ICONIFIED) {
        timer.start();
    }
    
    
    addWindowListener(new WindowAdapter() {
    
        public void windowDeiconified(WindowEvent e) {
            // set the icon back to default when window is DEICONIFIED 
            timer.stop();
        }
    });