Ö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
ö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.
İ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);
}
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
__. 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
Ö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
Sana yeni açmaya çalışırken ana JFrame için bu kodu kullanmak gerektiğini düşünüyorum tek:
this.setEnabled(false);
çok basit ve gerçekten OP sorununu cevapla, bana yardım ettin. –
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
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;
}
Sen kullanabilirsiniz:
private void btn_NewFormActionPerformed(java.awt.event.ActionEvent evt) {
this.hide();
new Frm_NewFormUI().setVisible(true);
}
Merhaba, tam olarak istediğimi yapıyor. Çok teşekkürler – user236501
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