2010-06-12 34 views
12

Örnek şimdi bir ana çerçevem ​​var, tüm müşteri bilgilerini jtable gösterebilir ve kullanıcının yeni müşteri oluşturmasına izin veren yeni bir JFrame açmak için bir oluşturma düğmesi vardı. Kullanıcının birden fazla çerçeve oluşturmasını istemiyorum. Herhangi bir salınım bileşeni veya API bunu yapabilir mi? veya ana çerçeveyi nasıl devre dışı bırakabilirim? JDialog gibi bir şey.Yeni JFrame açıldığında ana JFrame nasıl devre dışı bırakılır JFrame

cevap

11

öneririm Yeni müşteri iletişiminizi modal bir JDialog yapabilmeniz için, görünürken uygulamanızdaki diğer iletişim kutularından/çerçevelerden giriş yapmaya izin vermezsiniz. Ayrıntılar için modality tutorial'a bir göz atın.

+0

Merhaba, tam olarak istediğimi yapıyor. Çok teşekkürler – user236501

+0

Diğer yandan, modal kullanıcı arabirimleri * çok * can sıkıcıdır, bu yüzden aynı anda birkaç farklı kullanıcının düzenlenmesine izin vermek için GUI'yi yeniden tasarlamayı düşünün. – KarlP

1

İlk karede sadece firstFrame.setVisible(false) kullanın. Bu gizli yapacaktır ..

daha genel bir yaklaşım istiyorsanız yerde geçerli görüntülenen çerçeve bir başvuru var ve onu değiştirebilir, yeni bir çerçeve istekleri gösterilmesini zaman

JFrame currentFrame; 

void showRequest(JFrame frame) 
{ 
    currentFrame.setVisible(false); 
    currentFrame = frame; 
    currentFrame.setVisible(true); 
} 
+0

Ana çerçevenin hala sadece kullanıcının bir çerçeve oluşturmasını sağladığından emin olmak istiyorum. Düğmeyi devre dışı bırakmayı düşünüyordum, fakat uygulamak için başka iyi bir uygulama var mı? – user236501

+1

__. SetFocusable (false) __ ile deneyebilirsiniz, bu çerçeveyi koruyacaktır ancak kullanıcının içindeki herhangi bir şeyi tıklamasına izin verilmeyecektir. – Jack

+0

Öneriniz için teşekkür ederiz. Ben createButton.addActionListener (yeni java.awt.event.ActionListener() { \t public void actionPerformed (java.awt.event.ActionEvent e) {\t \t \t \t \t ... \t gibi yapmak çalıştı createFrame.setVisible (true); \t mainframe.setFocusable (false); } }); Ancak hala ana çerçevedeki oluştur düğmesine tıklayabilir miyim? – user236501

17

Sana yeni açmaya çalışırken ana JFrame için bu kodu kullanmak gerektiğini düşünüyorum tek:

this.setEnabled(false);

+2

çok basit ve gerçekten OP sorununu cevapla, bana yardım ettin. –

+0

Mükemmel, "ana çerçevenin nasıl devre dışı bırakılacağı" için kabul edilen yanıt olmalıdır. Teşekkür ederim! – corporateWhore

2

geç cevap için üzgünüm ama Singleton tasarım deseni kabul var? Sınıfı istediğiniz zaman bir sınıfın aynı örneğini döndürür. Kullanıcı bilgilerini girmek için bir çerçeve istiyorsa, yalnızca (aynı örneği) bir kare açık olacak Yani

Bu böyle şeyler:

private static MySingleFrame instance = null; //global var 

private MySingleFrame() { } //private constructor 
private static MySingleFrame getInstance() 
{ 

if(instance == null) 
{ 
instance = new MySingleFrame(); 
} 

//returns the same instance everytime MySingleFrame.getInstance() is called 
return instance; 


} 
1

Sen kullanabilirsiniz:

private void btn_NewFormActionPerformed(java.awt.event.ActionEvent evt) { 

      this.hide(); 
      new Frm_NewFormUI().setVisible(true); 

} 
İlgili konular