Вы можете принудительно свернуть графический интерфейс и .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 -all на FlashWindow
. Вызов dll невозможен с чистым кодом Java, вам понадобится помощь других языков программирования, например, например. с JNA . Кроме этого, вы также можете написать свою собственную программу на другом языке и вызывать ее из вашего Java-приложения. Я приведу пример в AutoHotkey ниже:
Код AutoHotkey:
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, вы можете вызвать его из любой функции:
Runtime.getRuntime().exec("./flash.exe \"" + MyJFrame.getTitle() + "\"");
В качестве альтернативы, можно использовать AutoHotkey.dll и получить к нему доступ в Javacode (есть инструкции о том, как это сделать в Интернете), так что вам не понадобятся внешние exe-файлы.
Если у вас все еще есть проблемы с перепрошивкой на панели задач Windows, пожалуйста, дайте мне знать!