يحتاج Java Repaint - Jcomponet إلى إعادة رسم الفصل عند استدعاء إعادة رسم () من فئة أخرى

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

سؤال

ما زلت أحاول الحصول على طريقة إعادة رسم () للعمل في فئة منفصلة ذات فئة تمدد jComponent.لقد وضعت بضع وظيفة هنا وحتى الآن لم أتمكن من الحصول على الكود للعمل.لقد حصلت على بعض النصائح الجيدة.أنا أضع أدناه ما لدي حتى الآن.

الفئة الرئيسية 1:

giveacodicetagpre.

الفئة 2:

giveacodicetagpre.

الفئة 3: (كان لدي هذا واحد مضمن في نفس الملفات كصف أعلاه - سيكون منفصلا عندما يكون لدي الرمز النهائي)

giveacodicetagpre.

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

doug demines hauf

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

المحلول

هل هناك طريقة لإجبارها على الطلاء على الفور.

سوف يرسم على الفور بمجرد أن يكون واجهة المستخدم الرسومية مرئية. لا يوجد شيء خاص تحتاج إلى القيام به. ليست هناك حاجة لطريقة SETDRAW (). سيتم رسم جميع المكونات تلقائيا عند عرض واجهة المستخدم الرسومية.

giveacodicetagpre.

هذا الرمز لا يفعل شيئا. واجهة المستخدم الرسومية غير مرئية بعد لذلك لا يوجد شيء للطلاء. لا يوجد سبب لك إن استدعاء إعادة رسم إلا إذا قمت بالفعل بتغيير خاصية مكون على واجهة المستخدم الرسومية المرئية.

giveacodicetagpre.

لا يوجد سبب لإنشاء طريقة تقوم ببساطة بإعادة رسم ()، والتخلص من هذه الطريقة. هذا ليس ما اقترحته في نشر آخر. قلت لك إنشاء طريقة لتغيير العقار الذي سيؤثر على نتائج لوحة المكون.

أعطيتك مثالا، كما هو الحال عند استخدام SetForefuroground ()، وتغيير الطريقة لون النص المراد رسمها، لذلك يتم الاحتجاج تلقائيا Repaint () تلقائيا عند تغيير اللون.

تخلص من جميع كود اللوحة المعقدة في مكون الطلاء الخاص بك ثم حاول القيام ببساطة

giveacodicetagpre.

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

أيضا، لا أعرف لماذا تحاول أن تعادل من صورة مخزنة. فقط ارسم باستخدام كائن الرسومات الذي يتم تمريره إلى طريقة PaintComponent (). ليست هناك حاجة لاستخدام BufferedImage، والتأرجح مزدوج بالفعل مؤقتا حتى تكون مجرد تعقيد التعليمات البرمجية الخاصة بك.

هل قرأت اللوحة المخصصة تعليمي حتى الآن؟ أنه يحتوي على مثال عمل.

تحرير:

بعد أن قال كل ما سبق، لا يزال لديك مشكلتين أساسيان:

  1. لا تضيف المكون إلى اللوحة
  2. المكون لا يحتوي على حجم مفضل لذلك لا يوجد شيء للطلاء. تحتاج إلى تجاوز طريقة GetPreferredSize () لإرجاع حجم معقول للمكون الذي تريد طلاءه.
  3. حتى هذه الإصلاحات لا تحل مشكلة اللوحة المعقدة، ولكن الآن يمكنني الآن الحصول على الرباط البسيط (...) إلى العمل.

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