Ho un JDialog
che prende il nome da parte dell'utente. Dietro il JDialog
, è un'applet. Non voglio che l'utente acceda a quell'applet finché non ha inserito il nome. Ho provato JDialog.setAlwaysOnTop(true)
, ma l'applet genera un errore AccessException
. Quindi quello che ho fatto è stato mantenere un ciclo while che eseguirà JDialog.setVisible(true)
fino al JtextField
(l'input per il nome utente) è vuoto (""). Ma per qualche motivo questo funziona molto lento, vale a dire i JDialog
carichi, ma ci vuole tempo per concentrarsi sul JTextField
e anche quando l'utente digita il suo nome, si tratta veramente lento ... come un carattere in 2 secondi ... c'è in qualche altro modo per costringere l'utente a inserire il nome prima di accedere all'applet?come garantire che JDialog rimane sempre in primo piano
risposta
Utilizzare un JDialog modale. Ad esempio, il codice nel tuo init (...) il metodo di JApplet potrebbe includere:
JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this));
dialog.setModal(true);
dialog.setSize(...);
dialog.setVisible(true);
oppure si può semplicemente utilizzare un JOptionPane.showInputDialog(). Di nuovo, devi solo specificare "questo" come componente principale del riquadro delle opzioni.
Si gira lentamente perché il programma sta elaborando quel ciclo foo
Che cosa si può fare è quello di aggiungere un ascoltatore finestra e poi la JDialog perso la sua messa a fuoco (o l'applet guadagna esso) ritornare l'attenzione al JDialog.
Questo dovrebbe svolgere molto meglio del ciclo for si sta usando in questo momento
Se ModalityTypes funziona per le applet, suggerirei invece quello. Non ho tempo di scoprirlo, però. –
Ho aggiunto un FocusListener a JDialog e ho scritto il corpo per la funzione focusLost(). Tuttavia, sembra non funzionare. Se l'utente fa clic su JDialog, non viene più visualizzato. Penso che fare clic all'esterno del JDialog non faccia perdere a JDialog la messa a fuoco, ma viene semplicemente nascosto. – mithun1538
mmhhh, puoi pubblicare qualche codice di esempio? – OscarRyz
Un'altra opzione sarebbe quella:
frame.setAlwaysOnTop(true);
costringe la finestra di sopra di qualsiasi altro.
- 1. PyQt: Sempre in primo piano
- 2. Fai in modo che la finestra rimanga sempre sopra un'altra finestra che rimane sempre in primo piano?
- 3. Livello finestra trasparente che è click-through e rimane sempre in primo piano
- 4. ExtJS 4 "sempre in primo piano" Finestra
- 5. Di fronte a "sempre in primo piano"
- 6. Tieni la finestra sempre in primo piano?
- 7. Crea messagebox vbscript che rimane in primo piano e blocca altre finestre
- 8. Come mantenere un QWidget sempre in primo piano?
- 9. Come posso garantire che un wxFrame sia portato in primo piano?
- 10. Come creare un'attività in primo piano?
- 11. Mantieni la tastiera sempre in primo piano e visibile
- 12. Il widget Android AppBarLayout è sempre in primo piano
- 13. Come rendere un modulo sempre in primo piano anche se è attivato Windows 7 Flip 3D
- 14. Notifiche Firebase in primo piano
- 15. Come portare un SKSpriteNode in primo piano?
- 16. Primo piano trasparente
- 17. WPF - Porta finestra in primo piano
- 18. FrameLayout primo piano con selettori
- 19. Impostazione di un JPanel contenuto in un JDesktopPane come sempre in primo piano
- 20. Disattiva le funzioni "Resta in primo piano" su photoshop CS2
- 21. Come posso mantenere un articolo specifico sempre in primo piano nella prima pagina?
- 22. Come mantenere l'intestazione statica, sempre in primo piano durante lo scorrimento?
- 23. Come viene visualizzato il pannello quando si avvia l'estensione Hangout Chrome creata per essere sempre in primo piano e bloccata?
- 24. Git: spostare un commit "in primo piano"
- 25. Linux: Esegui cron job in primo piano
- 26. TabWidget Colore bianco in primo piano?
- 27. Forzare la mia attività in primo piano?
- 28. Java, eseguire un'altra applicazione in primo piano
- 29. WebBrowser WPF (3.5 SP1) Sempre in primo piano - altro suggerimento per visualizzare HTML in WPF
- 30. Primo piano Vs Finestra attiva
proprio quello che stavo cercando. Grazie. – mithun1538
Ma c'è un problema. ActionListeners non rispondono più. Inoltre, l'utente può chiudere la finestra di dialogo (c'è una x in alto a destra nella finestra di dialogo). C'è qualcosa che devo ripristinare dopo che l'utente ha inserito il nome? – mithun1538
Se non si desidera che l'utente possa chiudere la finestra di dialogo, utilizzare: dialog.setDefaultCloseOperation (...); – camickr