تم تعديل هذه المشاركة بواسطة W.B في 5 أبريل 2010 في 18:19
فشلت في إظهار مجسمات JLabel بالشكل الصحيح في حلقة الfor وحتى الwhile
علاء الصالحي كتب:لماذا لا تضيف الخلفية أولاً؟تحياتي
اقتباسلو تضع الكود كاملا حتى نستطيع التجربة
أنا كنت سأقترح نفس الشيء
لولا أني قدرت أن الموضوع له علاقة بالجامعة أو ما شابه
تحياتي
أعتقد أنك لم تضبط الـ LayoutManager الخاص بالحاوية التي تضيف عليها الـ"أحجار". عليك بضبطه إلى null وبذلك تضمن إمكانية تحريكه يدوياً إلى أي نقطة تحددها.
أما إن لم تكن ترغب في تداخل الأحجار فوق بعضها أبداً فأقترح عليك استخدام GridLayout
إن لم تكن تعرف ما هي الـ LayoutManagers ابحث بالمنتدى هناك معلومات جيدة عنهم.
احتمال آخر وارد:
أرى أنك أنشأت حجر التجربة كما يلي:
Block testBlock = new Block(15,115,"b");
أي أنك قمت بضبط موضعه
لكني لا أرى كيف أنشأت عناصر المصفوفة blocks
هل قمت بضبط مواضع كل عناصرها ؟
إذا لم تغير ال layout manager فهذا يعني أنك تستعمل BorderLayout. وعندما تستعمل add دون تحديد المكان، فإنه يستعمل المكان الإفتراضي، أي BorderLayout.CENTER، مما يعني أن كل المكونات ستضاف فوق بعضها البعض في الوسط ولن يظهر إلا المكون الأخير الذي أضيف
أظن أن GridLayout يصلح لما تريد القيام به
JustPassing كتب:لو تضع الكود كاملا حتى نستطيع التجربة
Speed_Of_Light كتب:أعتقد أنك لم تضبط الـ LayoutManager الخاص بالحاوية التي تضيف عليها الـ"أحجار". عليك بضبطه إلى null وبذلك تضمن إمكانية تحريكه يدوياً إلى أي نقطة تحددها.أما إن لم تكن ترغب في تداخل الأحجار فوق بعضها أبداً فأقترح عليك استخدام GridLayoutإن لم تكن تعرف ما هي الـ LayoutManagers ابحث بالمنتدى هناك معلومات جيدة عنهم.
Speed_Of_Light كتب:احتمال آخر وارد:أرى أنك أنشأت حجر التجربة كما يلي:Block testBlock = new Block(15,115,"b");أي أنك قمت بضبط موضعهلكني لا أرى كيف أنشأت عناصر المصفوفة blocksهل قمت بضبط مواضع كل عناصرها ؟
JustPassing كتب:إذا لم تغير ال layout manager فهذا يعني أنك تستعمل BorderLayout. وعندما تستعمل add دون تحديد المكان، فإنه يستعمل المكان الإفتراضي، أي BorderLayout.CENTER، مما يعني أن كل المكونات ستضاف فوق بعضها البعض في الوسط ولن يظهر إلا المكون الأخير الذي أضيفأظن أن GridLayout يصلح لما تريد القيام به
تم تعديل هذه المشاركة بواسطة W.B في 5 أبريل 2010 في 21:56
اقتباسنعم أنا لم أتدخل في LayoutManager !
إذاً عليك التدخل ! :happy:
قم بضبطه إلى null
بالمناسبة ما نوع الحاوية التي تضيف إليها لصاقات JLable ؟
قم بعمل screenshot وأرنا المشكلة بالضبط
تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 5 أبريل 2010 في 21:54
Speed_Of_Light كتب:إذاً عليك التدخل ! :happy:قم بضبطه إلى null
Speed_Of_Light كتب:بالمناسبة ما نوع الحاوية التي تضيف إليها لصاقات JLable ؟
Speed_Of_Light كتب:قم بعمل screenshot وأرنا المشكلة بالضبط
تم تعديل هذه المشاركة بواسطة W.B في 6 أبريل 2010 في 12:32
1- انصحك باستخدام grid layout
2- تأند من انك تعمل initialize for block head and x y
Mohammed Mshari Ersan كتب:1- انصحك باستخدام grid layout2- تأند من انك تعمل initialize for block head and x y
تم تعديل هذه المشاركة بواسطة W.B في 6 أبريل 2010 في 13:28
Speed_Of_Light كتب:لن أستطيع مساعدتك من دون كود :wacko:
علاء الصالحي كتب:بما أنه لا يوجد شيفرةجرب أن تعيد شرح المشكلة من البدايةوادعم الشرح بالصورلعل وعسى :)تحيااتي
تم تعديل هذه المشاركة بواسطة W.B في 6 أبريل 2010 في 20:06
- - فيLevelReaderclass هناك دالة اسمهاgetSBlocks()..وهذه تعطي مصفوفة نصية ثنائية الأبعاد والتي تعني لي هنا قيم المجسمات-لا أعني الإحداثيات-!- فيالـclass الحاليهناك دالة تهتم فقط بجلب كل ما تنتجه الـLevelReader..وأسميت هذه الدالةgetFromLevelReader()!وهذا هو الجزء الهم من هذه الدالة :
جرب عمل تنقيح Debug للكود لتتأكد أنه يعمل كما تريد
تم تعديل هذه المشاركة بواسطة Speed_Of_Light في 6 أبريل 2010 في 22:31
Speed_Of_Light كتب:جرب عمل تنقيح Debug للكود لتتأكد أنه يعمل كما تريد
تم تعديل هذه المشاركة بواسطة W.B في 6 أبريل 2010 في 22:59
أي IDE تستخدم ؟
قصدت بالتنقيح عمل نقطة توقف BreakPoint قبل الموضع الذي تشك في وجود الخطأ فيه ثم تنفيذ الكود سطر تلو الآخر مع مراقبة قيم المتحولاتز
Speed_Of_Light كتب:أي IDE تستخدم ؟قصدت بالتنقيح عمل نقطة توقف BreakPoint قبل الموضع الذي تشك في وجود الخطأ فيه ثم تنفيذ الكود سطر تلو الآخر مع مراقبة قيم المتحولاتز



