2014-07-18 18 views
7

我想知道當程序中發生什麼事情時,Java或JFrame是否可以提醒用戶。例如,在Skype中收到新消息時,Skype圖標背景會變爲黃色。 "You have received a new message!"如何使任務欄中的JFrame警報?

我可以在Java中執行此操作嗎?

+0

你是什麼意思,在程序中發生的事情。 – Braj

+0

當某個方法完成工作或IF語句返回true時。 –

+1

可能重複的[如何在擺動中創建通知](http://stackoverflow.com/questions/3240415/how-to-create-a-notification-in-swing) – Frakcool

回答

5

至少您可以通過調用JFrame#setIconImage()方法來更改JFrame的圖標,該方法看起來像通知,並且如果需要也會更改標題。

創建一個圖標,當你想顯示何時有任何通知,並從代碼中設置任何你想要的圖標。


爲了創建可以如使用Swing Timer窗口以最小化形式在一個間隔使用兩個圖像和交換和停止計時器當再次取消圖標化窗口輝光(閃爍)的效果。當調用toFront()或requestFocus的()函數窗口將閃爍像你希望它

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(); 
    } 
}); 
+0

沒關係,我沒有正確閱讀。 – user3758041

+1

也他可以使用一個計時器,以使它如何說它「光和關燈」?我不知道如何解釋它...我的意思是讓它「發光」 – Frakcool

+1

@Frakcool是我在文章中編輯過的好方法。 – Braj

0

更多How to Use Swing Timers

示例代碼。

唯一的問題是它會獲得重點,但只要你不需要它那沒問題。 (窗戶不會到達它的請求前)