2010-04-13 20 views
6

Kullanıcıdan bir ad alan bir JDialog sahibim. JDialog'un ardında, bir uygulayıcıdır. Kullanıcının adı girene kadar o uygulamaya erişmesini istemiyorum. JDialog.setAlwaysOnTop(true)'u denedim, ancak uygulama AccessException hatası veriyor. Yani yaptığım şey, JtextField (kullanıcı adı girişi) boş olana kadar ("") JDialog.setVisible(true)'u çalıştıracak bir süre tutmaktı. Ama nedense bu gerçekten çalışıyor, yani JDialog yükler, yani, JTextField odaklanmak zaman alır ve kullanıcı adını yazdığında bile, gerçekten yavaş geliyor ... 2 saniye içinde bir karakter gibi ... Uygulamayı uygulamaya geçmeden önce kullanıcı adı girmeye zorlamak için başka bir yol var mı?JDialog'un her zaman en üstte kalmasını sağlayın

cevap

10

kullanın kalıcı bir JDialog kullandığınız çok daha iyi performans olmalıdır. Örneğin sizin init kodu (...) JApplet yöntemi şunları içerebilir:

JDialog dialog = new JDialog(SwingUtilities.windowForComponent(this)); 
dialog.setModal(true); 
dialog.setSize(...); 
dialog.setVisible(true); 

Ya da sadece bir JOptionPane.showInputDialog kullanabilirsiniz(). Yine, seçenek panelinin ana bileşeni olarak "bunu" belirtirsiniz.

+0

tam aradığım şey. Teşekkürler. – mithun1538

+0

Ama bir problem var. ActionListeners artık yanıt vermiyor. Ayrıca, kullanıcı diyaloğu kapatabilir (iletişim kutusunun sağ üst tarafında bir x işareti vardır). Kullanıcı adı girdikten sonra geri yüklemem gereken bir şey var mı? – mithun1538

+0

Kullanıcının iletişim kutusunu kapatmasını istemiyorsanız, şunu kullanın: dialog.setDefaultCloseOperation (...); – camickr

0

programı o foo döngü

Ne yapabilirsiniz bir pencere dinleyicisi eklemek ve daha sonra JDialog o odak var (veya uygulaması da kazanır) JDialog odağı dönmek kaybetti işliyor çünkü yavaş çalışıyor.

Bu

döngü şu anda

+0

ModalityTypes, appletler için çalışıyorsa, bunun yerine öneririm. Yine de öğrenmek için zamanım yok. –

+0

JDialog'a bir FocusListener ekledim ve gövdesini focusLost() işlevi için yazdım. Ancak, işe yaramıyor. Kullanıcı JDialog’u devre dışı bırakırsa, tekrar gösterilmez. JDialog'un dışına tıklamak JDialog'un odağı kaybetmesine neden olmadığını düşünüyorum, sadece gizleniyor. – mithun1538

+0

mmhhh, bazı örnek kod gönderebilir misiniz? – OscarRyz

1

Başka bir seçenek olacaktır:

frame.setAlwaysOnTop(true); 

Herhangi üst üste iletişim zorlar.

İlgili konular