الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Problem With Swing

مغلق
بدأه ahmed ali alsahli في 7 يناير 2008 · 14 رد · 1,345 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته,

عندي برنامج بسيط بإستخدام swing

عندما اضغط على زر معين يحدث التالي:

1- الشاشة الحالية تصبح disable

2- تظهر شاشة جديدة

سؤالي هو:

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

والسلام عليكم

#2
frame.dispose()

هذه الميثود لو أغلقت الفريم الجديد لم ينتهي البرنامج ككل بل يختفي الفريم الجديد و يظهر الفريم القديم

#3

السلام عليكم...

بارك الله فيك, أنا أعرف هذه الميثود.

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

كيف لي إعادتها الى طبيعتها قبل ان يتم اغلاق الشاشة الجديدة؟

السلام عليكم

#4

لم افهم اين المشكلة بنفس الطريقة التي جعلت فيها الفريم غير مفعل تستطيع ان تجعله مفعل فاذا كنت قد جعلت

setdisable(true);

اجعلها false

#5

السلام عليكم,

بارك الله فيك.. الذي أريده هو أين أضع هذه الميثود..

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

السلام عليكم

#6

السلام عليكم...

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

1- MainFrame.setEnabled(false);

2- ٍSubFrame sb=new SubFrame(); //الشاشة الجديدة هي كلاس غير الاولى

    sb.setVisible(true);

================================================

الان اريد اغلاق الشاشة الجديدة واعادة الشاشة الاولى لوضعها الطبيعي؟

السلام عليكم

#7

اممممممممممممم

لنفرض ان الكلاس الجديد هو 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.*;

تم تعديل هذه المشاركة بواسطة jfriend في 7 يناير 2008 في 13:15

#8

السلام عليكم...

بارك الله فيك بهذا الشكل خطأ.

لا تستطيع نداء الميثود setEnabled إلا إذا عملت new instance

وفي هذه الحالة سيظهر فورم آخر بالرغم ان الاول موجود ومازال disabled

#9

صحيح

هذا المثال للتوضيح فقط فانا لا اعلم كيف صنعت برنامجك انا فقط ادلك على المكان الذي تكتب فيه الكود

و هو داخل الميثود windowClosing

#10

أنا أرى ان تمرر الفريم القديم ك argument للفريم الجديد

#11

أو أن تجعل الفريم الجديد Internal Class في الفريم القديم

تستطيع بكل سلاسة أن تقوم بنداء الكائن الأصلي

اسم الفئة الخاصة بك ملحقة بنقطة ملحقة بـ this ملحقة باسم الدالة التي تريد استخدامها

الله معك

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#12

الاخ احمد على

ان كان سؤالك كالاتى : انت عندك 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);

رجاء تحاول تجرب الكود و لو كان فى اى تعليق منك او من اى عضو اكون شاكر

و السلام عليكم

#13

ممكن الاستعانة بهذا الكود الى هيوضح كلامى السابق

الكود فى المرفقات

Test.rar

#14

طيب ليش ما بتستعملي ال

WindowListener

mofeedchaar@hotmail.com

#15

محمد راغب

الحل اللي قلت عليه ما اعتقد بزبط ( مع اني ما جربته)

لأنك عملت setVisible(true); داخل Enonymos Inner Type Class

بالتالي رح يتعامل مع "this" كانك قصدك الـ inner class

وهذا طبعا مش ممكن

اعتقد انو الحل الوحيد انك تعمل private class داخل الـ class الاصلي وسميه مثلا close

على اساس implements windowLissener

وفيه اعمل اللي بدك اياه

وبالـ class الاصلي بتعمل newframe.addWindowLissener(close);

ملاحظه : انا ما جربت الحل وما جربت اي حل سبق

بس بتمنى حدا يجرب ويرجعلي خبر

تم تعديل هذه المشاركة بواسطة makki abomokh في 16 يناير 2008 في 11:24

هذا الموضوع مغلق.

مواضيع مشابهة