ahmed ali alsahli
Jan 7 2008, 11:45 AM
السلام عليكم ورحمة الله وبركاته,
عندي برنامج بسيط بإستخدام swing
عندما اضغط على زر معين يحدث التالي:
1- الشاشة الحالية تصبح disable
2- تظهر شاشة جديدة
سؤالي هو:
عندما أريد اغلاق الشاشة الجديدة.. كيف استطيع إرجاع الشاشة الأولى لوضعها الطبيعي؟ enable
والسلام عليكم
jfriend
Jan 7 2008, 11:53 AM
كود
frame.dispose()
هذه الميثود لو أغلقت الفريم الجديد لم ينتهي البرنامج ككل بل يختفي الفريم الجديد و يظهر الفريم القديم
ahmed ali alsahli
Jan 7 2008, 12:35 PM
السلام عليكم...
بارك الله فيك, أنا أعرف هذه الميثود.
واضح أنك لم تفهم سؤالي... أنا وعندما أغلق الشاشة الجديدة, أجد أن الشاشة الرئيسية مازالت على حالها.. أي disable
كيف لي إعادتها الى طبيعتها قبل ان يتم اغلاق الشاشة الجديدة؟
السلام عليكم
jfriend
Jan 7 2008, 12:42 PM
لم افهم اين المشكلة بنفس الطريقة التي جعلت فيها الفريم غير مفعل تستطيع ان تجعله مفعل فاذا كنت قد جعلت
setdisable(true);
اجعلها false
ahmed ali alsahli
Jan 7 2008, 12:50 PM
السلام عليكم,
بارك الله فيك.. الذي أريده هو أين أضع هذه الميثود..
الحدث المناسب الذي اضع فيه أن MainFrame.setEnabled(true);
السلام عليكم
ahmed ali alsahli
Jan 7 2008, 01:02 PM
السلام عليكم...
طبعا الشاشة الرئيسية كلاس... وعندما نضغط على الزر يحدث التالي:
1- MainFrame.setEnabled(false);
2- ٍSubFrame sb=new SubFrame(); //الشاشة الجديدة هي كلاس غير الاولى
sb.setVisible(true);
================================================
الان اريد اغلاق الشاشة الجديدة واعادة الشاشة الاولى لوضعها الطبيعي؟
السلام عليكم
jfriend
Jan 7 2008, 01:13 PM
اممممممممممممم
لنفرض ان الكلاس الجديد هو 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
Jan 7 2008, 01:34 PM
السلام عليكم...
بارك الله فيك بهذا الشكل خطأ.
لا تستطيع نداء الميثود setEnabled إلا إذا عملت new instance
وفي هذه الحالة سيظهر فورم آخر بالرغم ان الاول موجود ومازال disabled
jfriend
Jan 7 2008, 01:46 PM
صحيح
هذا المثال للتوضيح فقط فانا لا اعلم كيف صنعت برنامجك انا فقط ادلك على المكان الذي تكتب فيه الكود
و هو داخل الميثود windowClosing
jfriend
Jan 7 2008, 01:52 PM
أنا أرى ان تمرر الفريم القديم ك argument للفريم الجديد
علاء الصالحي
Jan 13 2008, 01:29 AM
أو أن تجعل الفريم الجديد Internal Class في الفريم القديم
تستطيع بكل سلاسة أن تقوم بنداء الكائن الأصلي
اسم الفئة الخاصة بك ملحقة بنقطة ملحقة بـ this ملحقة باسم الدالة التي تريد استخدامها
الله معك
mohamed rageb
Jan 13 2008, 09:14 PM
الاخ احمد على
ان كان سؤالك كالاتى : انت عندك 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
Jan 15 2008, 06:29 AM
ممكن الاستعانة بهذا الكود الى هيوضح كلامى السابق
الكود فى المرفقات
mofeed chaar
Jan 15 2008, 11:41 PM
طيب ليش ما بتستعملي ال
WindowListener
makki abomokh
Jan 16 2008, 11:23 AM
محمد راغب
الحل اللي قلت عليه ما اعتقد بزبط ( مع اني ما جربته)
لأنك عملت setVisible(true); داخل Enonymos Inner Type Class
بالتالي رح يتعامل مع "this" كانك قصدك الـ inner class
وهذا طبعا مش ممكن
اعتقد انو الحل الوحيد انك تعمل private class داخل الـ class الاصلي وسميه مثلا close
على اساس implements windowLissener
وفيه اعمل اللي بدك اياه
وبالـ class الاصلي بتعمل newframe.addWindowLissener(close);
ملاحظه : انا ما جربت الحل وما جربت اي حل سبق
بس بتمنى حدا يجرب ويرجعلي خبر
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء
إضغط هنا.