Wie kann ich die Windows-Taskleiste mit Swing?

8

Ich entwickle eine Swing-Anwendung und ich muss die Windows-Taskleiste blinken. Ich kann frame.requestFocus() nicht verwenden, weil ich den Fokus von keiner anderen Anwendung stehlen möchte.

    
Rob Mayhew 28.01.2009, 20:44
quelle

5 Antworten

12

Ich weiß nicht, ob es für neuere Versionen von Windows gilt, aber die Methode .toFront (), die verwendet wird, um das Fenster zu flashen, wenn sich keines der Fenster der aktuellen VM im Vordergrund befindet.

Dies bedeutet, dass das Aufrufen von frame.toFront () auf einem minimierten Frame immer zu einem Flash machen würde ...

    
Powerlord 28.01.2009, 21:01
quelle
4

JNIWrapper mit seiner Winpack-Erweiterung kann tun, was Sie wollen.

Die Demo auf der Website zeigt es in Aktion.

    
Allain Lalonde 28.01.2009 21:03
quelle
1

Sie können entweder Ihre GUI und .toFront -en es erzwingen:

%Vor%

was leider den Fokus aus dem aktiven Fenster entfernt. Sie können das aktive Fenster herausfinden und es später wieder aktivieren. Trotzdem dauert das Blinken nur etwa drei Sekunden.

... oder gehen Sie zum eigentlichen Kern der Sache, indem Sie eine DLL -Ruf auf FlashWindow verwenden. Das Aufrufen von dlls ist nicht mit sauberem Java-Code möglich, Sie benötigen die Hilfe anderer Programmiersprachen, z. mit JNA . Ansonsten könnten Sie auch Ihr eigenes Programm in einer anderen Sprache schreiben und es von Ihrer Java-Anwendung aus aufrufen. Ich gebe ein Beispiel in AutoHotkey unten:

AutoHotkey-Code:

%Vor%

kompiliert in eine Datei namens flash.exe , die Sie in Ihr Java-Arbeitsverzeichnis einfügen, können Sie es von einer beliebigen Funktion aufrufen:

%Vor%

Alternativ könnte man die AutoHotkey.dll verwenden und auf diese innerhalb des Javacodes zugreifen (es gibt Anleitungen, wie man es im Internet macht), so dass keine externen exe-Dateien benötigt werden.

Wenn Sie immer noch Probleme haben, das Blinken in der Windows-Taskleiste zu erreichen, lassen Sie es mich bitte wissen!

    
Blauhirn 04.01.2015 02:55
quelle
0

Wenn Sie Swing per se benutzen, können Sie sehr wahrscheinlich nicht; das ist eine Widnows-spezifische Sache.

    
Charlie Martin 28.01.2009 21:04
quelle
0

Der beste Weg, dies zu tun:

%Vor%     
Viktor Kalinin 13.04.2016 10:49
quelle