Sto sviluppando un'applicazione Swing e ho bisogno di far lampeggiare la barra delle applicazioni di Windows. Non riesco a utilizzare frame.requestFocus()
perché non voglio sottrarre lo stato attivo da altre applicazioni.Come posso far lampeggiare la barra delle applicazioni di Windows usando Swing?
risposta
Non so se si applica alle versioni più recenti di Windows, ma il metodo .toFront() utilizzato per eseguire il flash della finestra se nessuna delle finestre della VM corrente era in primo piano.
Ciò significa che la chiamata frame.toFront() su un telaio ridotto al minimo sarebbe sempre rendere Flash ...
JNIWrapper with its winpack extension può fare quello che vuoi.
La demo sul sito lo mostra in azione.
Utilizzando Swing di per sé, molto probabilmente non è possibile; questa è una cosa specifica dei Widnows.
Uh, e? La barra delle applicazioni di Windows è ancora specifica per Windows. –
Puoi forza-ridurre al minimo il GUI e .toFront
-en esso:
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!!
che purtroppo rimuoverà il focus dalla finestra attiva. Potresti scoprire la finestra attiva e riattivarla in seguito. Ma comunque, il lampeggio durerà solo per circa tre secondi.
... o scendere alla radice del problema utilizzando una DLL -call su FlashWindow
. Chiamare le DLL non è possibile con il codice Java pulito, avrete bisogno dell'aiuto di altri linguaggi di programmazione, possibili ad es. con JNA. Oltre a questo, puoi anche scrivere il tuo programma in un'altra lingua e chiamarlo dalla tua applicazione Java. Ti do un esempio in AutoHotkey di seguito:
Codice 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)
compilato in un file chiamato flash.exe
, mettere nella vostra directory di lavoro Java, si può chiamare da qualsiasi funzione:
Runtime.getRuntime().exec("./flash.exe \"" + MyJFrame.getTitle() + "\"");
In alternativa, è possibile utilizzare AutoHotkey.dll e accedervi all'interno del Javacode (ci sono delle guide su come farlo su Internet), quindi non ci sarebbe bisogno di alcun file exe esterno.
Se si riscontrano ancora problemi nel lampeggiare nella barra delle applicazioni di Windows, faccelo sapere!
Il modo migliore per farlo:
if (!isFocused()) {
setVisible(false);
setVisible(true);
}
- 1. C'è un modo per far lampeggiare un'applicazione della console Python nella barra delle applicazioni di Windows?
- 2. Come spostare la barra delle applicazioni di Windows (due)
- 3. android - Come posso far lampeggiare un pulsante?
- 4. Come posso visualizzare il servizio Windows nella barra delle applicazioni?
- 5. Nascondi barra delle applicazioni in Windows 8
- 6. Come rilevare le modifiche alla barra delle applicazioni di Windows?
- 7. Integrare Qt con la barra delle applicazioni di Windows 7 usando python?
- 8. Windows Phone 7 Nascondere la barra delle applicazioni
- 9. Ottieni l'altezza della barra delle applicazioni di Windows (Winapi)
- 10. Come posso chiedere a Windows le dimensioni delle icone della barra delle applicazioni?
- 11. Applicazione nella barra delle applicazioni
- 12. Coprire la barra delle applicazioni con VB
- 13. Come nascondere un'applicazione dalla barra delle applicazioni in Windows 7?
- 14. Barra delle applicazioni di Windows 8 in basso
- 15. Come si fa a far lampeggiare un'immagine?
- 16. Come nascondere un JFrame nella barra delle applicazioni della barra delle applicazioni
- 17. Come si crea una barra degli strumenti per la barra delle applicazioni su Windows?
- 18. Cambia l'icona della barra delle applicazioni fissata (Windows 7)
- 19. Come scrivere un'applicazione per la barra delle applicazioni in Linux
- 20. Nascondere WinForms app dalla barra delle applicazioni
- 21. Come associo la mia applicazione a un programma aggiunto sulla barra delle applicazioni di Windows 7?
- 22. Come posso creare un'app per Java Swing che copra la barra del titolo di Windows?
- 23. Barra di avanzamento di Windows 7 nella barra delle applicazioni in C#?
- 24. Nascondi l'app PyQt dalla barra delle applicazioni
- 25. Come trovare le icone per la barra delle applicazioni in Metro Windows 8?
- 26. Process.Start ("explorer.exe"); non restituirà la barra delle applicazioni
- 27. Come rimuovere l'ombra sopra la barra delle applicazioni?
- 28. Come sbloccare la cartella "Libreria" dalla barra delle applicazioni usando Powershell?
- 29. Come far lampeggiare un blocco di testo in wpf?
- 30. Come posso rimuovere le icone della barra del titolo e della barra delle applicazioni dei programmi Java su Windows 7?
C'è un aspetto negativo di questo approccio. Se un utente si trova nell'applicazione, digitando un JTextArea, ad esempio, questa funzionalità rimuove lo stato attivo e interrompe la digitazione. –