برنامج Java، AWT التجديد، مخرج على نظام التشغيل Mac OS X 10.4

StackOverflow https://stackoverflow.com/questions/184491

سؤال

لدينا برنامج Java تم إنشاؤها باستخدام AWT. يتيح هذا التطبيق الصغير قمت بتحديد الصور من القرص الصلب الخاص بك وتحميلها على الخادم. ويشمل التطبيق الصغير قائمة للتمرير من الصور، والذي يعمل بشكل جيد في ويندوز، لينكس وماك OS X 10.5. نطلق هذا التطبيق الصغير عن طريق جافا ويب ستارت أو داخل صفحة الويب.

ولدينا الصغير لا تتصرف بشكل صحيح في نظام التشغيل Mac OS X 10.4، بغض النظر عن إصدار جافا (1.4 أو 1.5). يمكنك العثور على قطة من السلوك غير صحيحة، عند التمرير، هنا:

http://www.lavablast.com/tmp/ui_error.png

وببساطة، وأحيانا عند التمرير الصور في نهاية المطاف متداخلة رأس أو تذييل الصفحة من التطبيق. لا يحدث هذا السلوك على منصات أخرى. على نظام التشغيل Mac OS X 10.4، فإنه يظهر الصور في موقع غير صحيح عند التمرير، والذي لن يكون سيئا للغاية إذا كان تحديث الشاشة بعد أن رسم الصورة على هذا الموقع. ومع ذلك، فإنه لا يبدو أن تطبيق يعرف ذلك رسمت بشكل غير صحيح، وبالتالي لا تحديث.

إذا تم تصغير النافذة، وتغيير حجمها أو حتى انتقل، وتطبيق يتم تحديث وعناصر وضعه بشكل غير صحيح تتلاشى وتطبيق يستأنف عادة. قضيت بعض الوقت في محاولة لفرض تحديث صورة الخلفية دون جدوى. (لإعادة رسم صورة مباشرة، إعادة رسم جميع الأطفال من عدد قليل من لوحات، الخ) وهكذا، أنا أبحث عن أي النصائح التي من شأنها أن تساعد لي لحل هذه المشكلة تحت Mac OS X 10.4 أو في أسوأ الأحوال، مجرد محاكاة الصغير الكامل تحديث.

وحتى وقت قريب، كان كل شيء متوافق مع جافا 1.1 ولكن هذا قد تغير في بعض المواقع التي تتطلب الآن 1.4. أنا لا أشعر بأن هذه التغييرات خلقت هذه القضية، وأنا مجرد توفير هذه المعلومات كما إضافية. إذا كنت مهتما في تفاصيل التنفيذ من لوحة التمرير، وسوف التحقيق، ولكن انا افترض ان هذا هو علة منصة المشترك الذي الحلول يجب أن تكون معروفة.

لتكرار المشكلة، افتح تطبيق جافا ويب ستارت التالية: http://www.lavablast.com/tmp/opal-webstart.php. JNLP

واختر المجلد الذي يحتوي على الكثير من الصور واللعب مع شريط التمرير. في مرحلة ما (بسرعة إلى حد ما)، يجب أن تحصل مشكلة التحديث.

وتحرير: تابعت الاقتراح الأول هنا، واستبدال كل ما عندي من الضوابط التي تتميز الصور الخلفية مع ما يعادلها سوينغ والقضية لا يزال هناك. (بالإضافة إلى ذلك، هناك العديد من إصلاحات أخرى أود أن الحاجة إلى القيام به لتفعل تغيير كامل). أي أفكار أخرى؟ ومن شأن خط واحد بسيط من التعليمات البرمجية التي يفرض تحديث كامل تكون كبيرة:)

وEdit2: الخيط الرئيسي يخلق لوحات وتطلق X المواضيع. باستخدام نمط مراقب / المخطر، والمواضيع كاملة وإخطار التحكم الرئيسية، والتي تضيف لوحة إلى الصفحة. ويتم ذلك عن طريق EventQueue.invokeLater التي، إلا إذا كنت مخطئا، ينبغي أن تعمل على الخيط الصحيح. المسألة هي في ذروته عند التمرير حتى لو أي مواضيع اضافية تعمل (كما حدث أثناء تحميل).

هل كانت مفيدة؟

المحلول

ويبدو بالفعل ان خلط خفيفة الوزن (سوينغ عادة) ومكونات الوزن الثقيل (AWT) معا. الانتقال إلى أرجوحة تحتاج إلى استبدال كل مشاركة AWT حكمه المكون سوينغ. (تلميح: تجنب java.awt استيراد *)

والخيوط وغالبا ما يكون مشكلة محتملة عن الخلل ونيف. يجب دائما أن تستخدم مكونات سوينغ على بتوقيت شرق الولايات المتحدة (استخدام java.awt.EventQueue.invokeLater). AWT غير ذات ألوان هي نظرية، ولكن ليس في الممارسة - أيضا تقييد استخدام إلى بتوقيت شرق الولايات المتحدة

نصائح أخرى

وكما كنت تتطلب بالفعل جافا 1.4 يجب عليك أن تنظر بعض التغييرات الصغيرة إلى أن تأخذ في GUI استخدام SWING بدلا من ذلك، تحل لدينا الصغير تحديث القضايا مع الهجوم الجوي. (ماك، لينكس وغيرها)

إذا كان لديك على سبيل المثال لوحة، تحتاج إلى استبدالها JPanel الخ.

وتحتاج هذه:

import javax.swing.*;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top