스윙을 사용하여 Windows 작업 표시 줄을 어떻게 플래시 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/489255

  •  20-08-2019
  •  | 
  •  

문제

스윙 애플리케이션을 개발 중이며 Windows 작업 표시 줄을 플래시해야합니다. 나는 사용할 수 없다 frame.requestFocus() 다른 응용 프로그램에서 초점을 훔치고 싶지 않기 때문입니다.

도움이 되었습니까?

해결책

최신 버전의 Windows에 적용되는지는 모르겠지만 현재 VM의 창이 전경에 있지 않은 경우 창을 플래시하는 데 사용 된 .tofront () 메소드.

즉, 최소화 된 프레임에서 frame.tofront ()를 호출하면 항상 플래시가 될 것입니다 ...

다른 팁

Winpack 확장 기능이있는 JNIWRAPPER 원하는대로 할 수 있습니다.

사이트의 데모는 실제로 작동하는 것을 보여줍니다.

GUI를 강제로 모방 할 수 있습니다 .toFront-en It :

        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!!

슬프게도 활성 창에서 초점을 제거 할 것입니다. 활성 창을 찾아 나중에 다시 활성화 할 수 있습니다. 그러나 여전히 깜박임은 약 3 초 동안 만 지속됩니다.

... 또는 DLL-Call ON FlashWindow. 깨끗한 자바 코드에서는 DLL을 호출 할 수 없습니다. 다른 프로그래밍 언어의 도움이 필요합니다. 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 Working Directory에 넣으면 모든 기능에서 호출 할 수 있습니다.

    Runtime.getRuntime().exec("./flash.exe \"" + MyJFrame.getTitle() + "\"");

또는 autohotkey.dll을 사용하여 javacode 내에서 액세스 할 수 있으므로 (인터넷에서 수행하는 방법에 대한 가이드가 있음) 외부 EXE 파일이 필요하지 않습니다.

Windows 작업 표시 줄에서 플래시를 달성하는 데 여전히 문제가있는 경우 알려주십시오!

이것을하는 가장 좋은 방법 :

if (!isFocused()) {
        setVisible(false);
        setVisible(true);
    }

스윙 자체를 사용하면 아마도 할 수 없습니다. 그것은 위로 구체적인 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top