我正在開發一個Swing應用程序,我需要刷新Windows任務欄。我不能使用frame.requestFocus()
,因爲我不想竊取任何其他應用程序的焦點。如何使用Swing來刷新Windows任務欄?
回答
我不知道它是否適用於較新版本的Windows,但如果當前虛擬機的窗口都不在前臺,則使用.toFront()方法來刷新窗口。
這意味着一個最小化的框架調用frame.toFront()總是會讓它閃爍......
JNIWrapper with its winpack extension可以做你想做的。
網站上的演示顯示它正在運行。
使用Swing本身,你很可能不能;這是一個Widnows特定的事情。
呃,和? Windows任務欄仍然是特定於Windows的。 – 2009-01-29 04:47:12
您可以力減少你的GUI和.toFront
-en它:
Gui.frame.setState(Frame.ICONIFIED);
for (int i = 0; i < 3; i++) {
Thread.sleep(10);
Gui.frame.toFront();
Thread.sleep(10);
Gui.frame.setVisible(false);
Thread.sleep(10);
Gui.frame.toBack();
Thread.sleep(10);
Gui.frame.setVisible(true);
}
// be creative!!
這可悲的是將活動窗口中刪除焦點。你可以找出活動窗口並在之後重新激活它。但是,閃光燈只能持續約三秒鐘。
......或者通過使用DLL -call on FlashWindow
找到問題的根源。使用乾淨的Java代碼無法調用dll,您需要其他編程語言的幫助,例如,與JNA。除此之外,您還可以使用其他語言編寫自己的程序,並從Java應用程序中調用它。我將在AutoHotkey的下面給出一個例子:
的AutoHotkey代碼:
Runtime.getRuntime().exec("./flash.exe \"" + MyJFrame.getTitle() + "\"");
:
if 0 != 1 ; note: in ahk, 1 corresponds args[1] and 0 corresponds args.length
{
msgbox, There needs to be ONE parameter passed over to this file, which is the name of the window that should be flashed.
ExitApp
}
programName = %1%
winget, hWnd, ID, %programName%
DllCall("FlashWindow",UInt,hWnd,Int,True)
編譯成一個名爲flash.exe
文件,把你的Java工作目錄,你可以從任何函數調用它
或者,可以使用AutoHotkey.dll並在Java代碼中進行訪問(有關如何在Internet上執行操作的指南),因此不需要任何外部exe文件。
如果您在實現Windows任務欄中的閃爍時仍遇到問題,請告訴我!
最好的方式做到這一點:
if (!isFocused()) {
setVisible(false);
setVisible(true);
}
- 1. 刷新Windows CE - 任務欄
- 2. 如何將任務欄固定在Windows任務欄上?
- 3. 如何在需要關注時在Windows任務欄上刷新JFrame
- 4. Windows任務欄API
- 5. Windows 7任務欄
- 6. 如何從部分受信任的.NET應用程序中刷新任務欄?
- 7. 刷新Swing GUI
- 8. 如何在Windows任務欄上顯示來自JSON源的值?
- 9. 使用SSIS腳本任務刷新Excel
- 10. 如何使用windows api更改任務欄中的圖標
- 11. 如何在Windows 7任務欄中顯示進度(使用Qt)?
- 12. 如何在Windows服務中使用Quartz.Net來安排任務?
- 13. 如何從Windows服務刷新令牌?
- 14. 如何刷新Eclipse中的「任務」?
- 15. 自定義Windows任務欄
- 16. Windows 7任務欄進度
- 17. wxPython和windows 7任務欄
- 18. QDesktopWidget和Windows任務欄
- 19. 如何確定使用java swing的具有任務欄的屏幕?
- 20. Java Swing - 使用定時器刷新jTable
- 21. AutoIt代碼來啓用和禁用Windows任務欄
- 22. Java Swing刷新JPanel
- 23. 刷新JFrame? Java Swing
- 24. 如何在java swing中刷新jLabel?
- 25. 任何方式來刷新JComboBox中selectedItemReminder
- 26. Windows-7中應用程序圖標的更新任務欄
- 27. 使用PowerShell對任務欄
- 28. 應用程序如何在Windows任務欄上顯示對象?
- 29. 如何在Windows任務欄中組合我的應用程序?
- 30. 刷新桌面和任務欄中的所有圖標
有一個缺點這種方法。例如,如果用戶在應用程序中,輸入JTextArea,則此功能會消除焦點並中斷打字。 – 2012-05-25 20:15:21