منتدى طلبة كلية الهندسه بأسوان
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

منتدى طلبة كلية الهندسه بأسوان

منتدى طلبة كلية الهندسه بأسوان
 
الرئيسيةالتسجيلأحدث الصوردخول

 

  بين الـawt و الـswing

اذهب الى الأسفل 
كاتب الموضوعرسالة
وائل حسن
مهندس بيشارك كويس
مهندس بيشارك كويس
وائل حسن


عدد المساهمات : 104
تاريخ التسجيل : 18/05/2010
العمر : 36
الموقع : أرى بخارى بلادي وهي نائية -- وأستريح إلى ذكرى خراسانِ
Upload Photos :  بين الـawt و الـswing  Upload
أهم مواضيعى : مدونتي الشخصية:
مدونة أفكار (مدونةٌ شخصيةٌ عن: السياسة، و المجتمع، و الأدب، و العلم.)
http://afkar-abo-eyas.blogspot.com


 بين الـawt و الـswing  Empty
مُساهمةموضوع: بين الـawt و الـswing     بين الـawt و الـswing  I_icon_minitimeالجمعة 24 أغسطس - 18:54








كنتُ
قد قلتُ من قبل أن هناك تنبيهاتٍ لأخطاء زمن تنفيذ runtime errors تظهر
أثناء تجربة برنامجي الذي أعمل عليه حالياً في بيئة الـJVM، و ذلك بشكلٍ لا
يمكن توقعه ! و قد ظننتُ ساعتها أن هذا ناتجٌ عن مشاكل في نظام التشغيل
عندي (كتخمينٍ مبدئي) و قد تبين لي الآن خطأ هذا الظن.


و
كذا فقد كانت هناك مشاكل تواجهني بخصوص اللغة العربية في واجهة المشروع،
حيث أن في البرنامج توجد تلك النافذة frame التي يوجد بها صندوق نصوص
textarea يقوم بالتفاعل مع المستخدم بعرض نتائج له و أخذ مُدخلاتٍ عند
اللزوم بما يُماثل محاكيات سطر الأوامر command line emulators، و قابلتني مشكلة اتجاه النص في
صندوق النصوص لأن الاتجاه الافتراضي كان من اليسار لليمين، و كان من اللازم
تغيير ذلك بتغيير إعدادت صندوق النصوص.



و هنا ظهرت المشاكل الغريبة: فقد جربتُ حلين هما استخدام:













[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

1
2
3
4


private Locale arabic = new Locale("ar", "KW");
private ComponentOrientation arabicOrientation =
ComponentOrientation.getOrientation(arabic);
console_area.setComponentOrientation(arabicOrientation);









ثم بعد ذلك استخدام:












[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

1


console_area.applyComponentOrientation(arabicOrientation);









و لكنهما لم يعملا مطلقاً !


و
حينما بحثتُ علي الشبكة عن مثيلٍ لهذه المشاكل الغريبة وجدتُ أن أحدهم قام
بالإبلاغ عن هذه المشكلة علي موقع sun، و كان الرد عليه أنها مشاكل تتعلق
بمكتبة awt التي "لا تعمل" فيها دالة applyComponentOrientation أصلاً لعدم وجود كودٍ لها في الصنف textarea !
يعني أن الدالة مجرد حبرٍ علي ورق !


بل الأنكي أن الرد أكمل أنه ليست هناك نية لإصلاح هذا الأمر الآن !


و قد نصح صاحبُ الرد السائلَ أن يستخدم مكتبة swing بدلاً من الـawt في عمله.


و
كالعادة لم "أكذب خبراً" و انطلقتُ لأجرب هذا الحل الجديد، فقمتُ بعمل
نسخةٍ احتياطيةٍ من عملي الأخير حتي لا أُجازف به عند عمل التغييرات
الجديدة التي ربما تكون جذرية.


ثم
قمتُ بحذف صندوق نصوص مكتبة awt و أدرجتُ صندوق نصوص swing، و الجيد هنا
أن مكونات الواجهة API التي استعملتُها مع صندوق نصوص awt كانت موجودةً
بأكملها في صندوق نصوص swing (و لا أدري هل الواجهتان متماثلتان بالكامل أم
لا) و بالتالي لم أحتج لتغيير أي شيءٍ في الأكواد نهائياً (بعد جعل اسم
الصندوق الجديد مماثلاً لاسم الصندوق المحذوف بالطبع).





و
حينما اختبرتُ البرنامج وجدته قد تلافي مشكلة اتجاه النصوص بنجاحٍ و الحمد
لله تعالي، و الرائع أن تلك الاستثناءات التي تحدثتُ عنها من قبل أصبحت أقل
بكثيرٍ جداً عما كانت عليه قبلاً، بما يعني أن السبب الرئيس وراء ظهورها
هو استخدام الـawt، أو علي الأقل استخدامها مع الـswing في نفس المشروع (و
إن كنتُ أُرَجِّح الظن الأول)، و حينما قللتُ الاعتماد علي الـawt قلت
المشاكل بالتوافق.



بعد ذلك واجهتني مشكلةٌ أخري هي أنه: عند كتابة نصٍ كبير
الحجم في صندوق النصوص الجديد لا يتم عرض آخر الأسطر التي تم كتابتها، بل
تظل الأسطر الأولي هي التي في المقدمة، و لرؤية الأسطر الأخيرة يحتاج
المستخدم لاستخدام عمود الإزاحة scrollbar يدوياً و هو أمرٌ غير عملي لمثل
هذه البرامج، فاحتجتُ إلي كودٍ لجعل الانزلاق يتم تلقائياً و وجدتُه بالفعل
بحمد الله تعالي، و بعد تعديلٍ بسيط أصبح كما يلي:















[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذا الرابط]

1
2
3
4


int pos = console.console_area.getText().length() - 1;
if(pos < 0)
pos = 0;
console.console_area.setCaretPosition(pos);









و بالفعل عمل مُحاكي سطر الأوامر بشكلٍ جيد، و إن كان أثقل في العمل من النسخة التي كانت تعمل بالـawt بشكلٍ طفيف.

الخلاصة هنا أن استخدام الـswing أفضل و
أكثر أمناً من الـawt التي يتم إهمالها تدريجياً بما يُوحي بالرغبة
مستقبلاً في إسقاطها من الحسابات تماماً.

الرجوع الى أعلى الصفحة اذهب الى الأسفل
http://afkar-abo-eyas.blogspot.com
 
بين الـawt و الـswing
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
منتدى طلبة كلية الهندسه بأسوان :: هندسة الحاسبات والنظم :: البرمجة Programming-
انتقل الى: