المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: Problem With Swing
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي لغة جافا JAVA
ahmed ali alsahli
السلام عليكم ورحمة الله وبركاته,

عندي برنامج بسيط بإستخدام swing
عندما اضغط على زر معين يحدث التالي:

1- الشاشة الحالية تصبح disable
2- تظهر شاشة جديدة

سؤالي هو:
عندما أريد اغلاق الشاشة الجديدة.. كيف استطيع إرجاع الشاشة الأولى لوضعها الطبيعي؟ enable

والسلام عليكم
jfriend
كود
frame.dispose()

هذه الميثود لو أغلقت الفريم الجديد لم ينتهي البرنامج ككل بل يختفي الفريم الجديد و يظهر الفريم القديم
ahmed ali alsahli
السلام عليكم...

بارك الله فيك, أنا أعرف هذه الميثود.
واضح أنك لم تفهم سؤالي... أنا وعندما أغلق الشاشة الجديدة, أجد أن الشاشة الرئيسية مازالت على حالها.. أي disable
كيف لي إعادتها الى طبيعتها قبل ان يتم اغلاق الشاشة الجديدة؟


السلام عليكم
jfriend
لم افهم اين المشكلة بنفس الطريقة التي جعلت فيها الفريم غير مفعل تستطيع ان تجعله مفعل فاذا كنت قد جعلت
setdisable(true);
اجعلها false
ahmed ali alsahli
السلام عليكم,

بارك الله فيك.. الذي أريده هو أين أضع هذه الميثود..
الحدث المناسب الذي اضع فيه أن MainFrame.setEnabled(true);


السلام عليكم
ahmed ali alsahli
السلام عليكم...

طبعا الشاشة الرئيسية كلاس... وعندما نضغط على الزر يحدث التالي:

1- MainFrame.setEnabled(false);
2- ٍSubFrame sb=new SubFrame(); //الشاشة الجديدة هي كلاس غير الاولى
    sb.setVisible(true);
================================================
الان اريد اغلاق الشاشة الجديدة واعادة الشاشة الاولى لوضعها الطبيعي؟


السلام عليكم
jfriend
اممممممممممممم

لنفرض ان الكلاس الجديد هو add

كود
       add a=new add();
      
                a.setVisible(true);
      a.addWindowListener(

// anonymous inner class for windowClosing event
new WindowAdapter() {

// terminate application when user closes window
public void windowClosing( WindowEvent event )
{
MainFrame.setEnabled(true);

}

} // end anonymous inner class

); // end call to addWindowListener


طبعا لا تنسى استدعاء
كود
import java.awt.event.*;
ahmed ali alsahli
السلام عليكم...
بارك الله فيك بهذا الشكل خطأ.

لا تستطيع نداء الميثود setEnabled إلا إذا عملت new instance
وفي هذه الحالة سيظهر فورم آخر بالرغم ان الاول موجود ومازال disabled
jfriend
صحيح
هذا المثال للتوضيح فقط فانا لا اعلم كيف صنعت برنامجك انا فقط ادلك على المكان الذي تكتب فيه الكود
و هو داخل الميثود windowClosing


jfriend
أنا أرى ان تمرر الفريم القديم ك argument للفريم الجديد
علاء الصالحي
أو أن تجعل الفريم الجديد Internal Class في الفريم القديم
تستطيع بكل سلاسة أن تقوم بنداء الكائن الأصلي
اسم الفئة الخاصة بك ملحقة بنقطة ملحقة بـ this ملحقة باسم الدالة التي تريد استخدامها

الله معك
mohamed rageb
الاخ احمد على
ان كان سؤالك كالاتى : انت عندك frame with button لما تضغط على الزر تظهر فرام جديدة و القديمة تختفى
و لما تغلق الجديدة ترجع القديمة لظهور مرة اخرى.........ان كان كذلك ممكن تعمل الاتى
cosider the basic frame is ....basicFrame
and the new frame is .... newFrame
//code
newFrame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE )
و نعمل windowAdpter for newFrame and implements the windowClosing method to do the following
newFrame.dispose();
basicFrame .setVisible(true);

رجاء تحاول تجرب الكود و لو كان فى اى تعليق منك او من اى عضو اكون شاكر
و السلام عليكم
mohamed rageb
ممكن الاستعانة بهذا الكود الى هيوضح كلامى السابق
الكود فى المرفقات
mofeed chaar
طيب ليش ما بتستعملي ال
WindowListener
makki abomokh
محمد راغب
الحل اللي قلت عليه ما اعتقد بزبط ( مع اني ما جربته)
لأنك عملت setVisible(true); داخل Enonymos Inner Type Class
بالتالي رح يتعامل مع "this" كانك قصدك الـ inner class
وهذا طبعا مش ممكن

اعتقد انو الحل الوحيد انك تعمل private class داخل الـ class الاصلي وسميه مثلا close
على اساس implements windowLissener
وفيه اعمل اللي بدك اياه
وبالـ class الاصلي بتعمل newframe.addWindowLissener(close);

ملاحظه : انا ما جربت الحل وما جربت اي حل سبق
بس بتمنى حدا يجرب ويرجعلي خبر
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.