Componenti GUI in Java utilizzano eventi di stato attivo e ascoltatori di messa a fuoco per determinare quando il loro windows è attualmente la finestra "attiva", che determina se gestisce l'input dalla tastiera. Per ottenere questo obiettivo, una finestra deve chiamare metodo ereditato "requestFocus()" o "toFront()". Il primo dà l'input da tastiera finestra, e quest'ultimo mette la finestra sopra alle altre finestre. Due classi di "frame" di Java, telaio e JFrame, sono entrambi i componenti che possono richiedere attenzione per se stessi o passa lo stato attivo su un altro telaio.
Istruzioni
1
Se si desidera un telaio per attirare l'attenzione, come in "myFrame.requestFocus();", chiamare il metodo "requestFocus()" o "toFront()"
2
Fissare un FocusListener al telaio. Se si dispone di un'istanza di JFrame chiamato "myFrame", questo viene fatto all'inizio con il codice riportato di seguito: "myFrame.addFocusListener (FocusListener() nuovo {Sub focusGained(FocusEvent e) {}});"
3
Definire il metodo di focusGained in modo che in caso di qualsiasi altra azione da intraprendere quando cambia lo stato attivo, è finita.
4
Ripetere il passaggio 1 tramite il passaggio 3 con le altre istanze di telaio.
Consigli & Avvertenze
- Se si desidera passare tra i componenti in una singola finestra, utilizzare il metodo "requestFocusInWindow()" invece di "requestFocus()"
- Non tutte le richieste per la messa a fuoco possono essere concessa immediatamente. Utilizzare focusGained per impostare un flag per indicare il tuo programma quando il telaio ottiene effettivamente lo stato attivo. Come Swing componenti non sono thread-safe, questo flag deve essere dichiarato come un tipo di dati volatili.