Sto scrivendo un'app Java (Swing GUI) che visualizza periodicamente un JFrame.È possibile portare JFrame in primo piano ma NON mettere a fuoco?
E 'possibile in qualche modo portare la finestra in primo piano (foo.setAlwaysOnTop (true) sarebbe ancora meglio) ma senza lo che ha lo stato attivo?
Alcune persone spostano di tanto in tanto gli occhi dallo schermo per guardare la tastiera mentre scrivono, e sono sicuro che se questa finestra catturasse sempre il focus della tastiera, le persone si arrabbiano molto perché li sta causando perdere un bel numero di tasti ogni volta che appare inosservato.
In altri casi, anche quando l'utente è in realtà in grado di battitura a macchina, senza guardare la tastiera per tutto il tempo, avere una finestra pop-up e ottenere attenzione potrebbe causare azioni indesiderate dalla finestra pop-up in sé (alcuni Tab
+ Enter
combinazione, ad esempio, in cui l'utente seleziona accidentalmente un'opzione che in realtà non avrebbe altrimenti selezionato).
Grazie in anticipo!
Aggiornamento
Come suggerisce Jonas, foo.setFocusableWindowState(false);
sembra funzionare se chiamato dopo che la finestra è stata resa (testato su Gnome solo).
Questo non funziona:
foo.setFocusableWindowState(false);
foo.setVisible(true);
foo.setFocusableWindowState(true);
Tuttavia, questo fa:
foo.setFocusableWindowState(false);
foo.setVisible(true);
Thread.sleep(1000);
foo.setFocusableWindowState(true);
dovrò vedere se c'è un evento che posso prendere/me ascolto che permette di fare foo.setFocusableWindowStatue(true);
quando appropriato.
Considero il mio problema risolto.
hai mai trovato un evento da ascoltare quando viene eseguito il rendering del frame? – lordoku
Qualcuno ha mai trovato un evento da ascoltare qui che funzionasse? – wrslatz