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

NullPointerException لا أعرف سببه

بدأه mr.beshoy في 12 سبتمبر 2011 · 8 رد · 708 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فى ال pakage ال اسمها tetrisView فيها 4 class

المشكلة معايا فى ال ال فئات >>>>> tetrisCell , DisplayRandomBlock

توضيح للمشكلة :

فى ال class tetrisCell ستجد Method تُسمى createGUI

فيها متغير من نوع Jlabel معرف كالاتى :

    dynamicNextBlockLabel = new JLabel(displayRandomBlock.displayRandomBlock1());

زى ما انت شايف عاوز اعرض على dynamicNextBlockLabel صورة

بنادم على ()method displayRandomBlock1 فى ال class DisplayRandomBlock

حيث أن ال method displayRandomBlock1 بترجع random Icons

لكن للاسف بيدينى nullpointerException !!!

--------------------------------------------------------------------------------------------------------------

و فى ال class DisplayRandomBlock تم تعريف ال ImageIcon بداخل ال constructor بالطريقة هذه

myImageIcons[0] = new ImageIcon(getClass().getResource("Images/cubeBlock.png"));
        myImageIcons[1] = new ImageIcon(getClass().getResource("Images/stickBlock.png"));

دائماً استعمل هذه الطريقة ليس هذه المرة الاولى و لكنه بيعطينى هنا nullpointerexception ...!!!!!

و لما عمل كده :

        myImageIcons[0] = new ImageIcon("Images/cubeBlock.png");

مش بيطلع exception لكنه لا يعرض الصورة !!!!

------------------------------------------------------------------------

وللعلم الصور سليمة وشغالة ، و عملت مشروع جديد فيه جزئية ال code ال فيها المشكلة فقط و اشتغل تمام

مش عارف ايه السبب هنا .....

أتمنى تساعدونى في المشكة دى ..

المشروع مرفق

-----------------------------------

شكراً

TetrisGame.rar

تم تعديل هذه المشاركة بواسطة mr.beshoy في 12 سبتمبر 2011 في 07:57

#2

الخطأ هو انه في السطر :

public DisplayRandomBlock() {
        random = new Random();
//        setUpTetrisIcon();
        myImageIcons[0] = new ImageIcon(getClass().getResource("Images/cubeBlock.png"));
        myImageIcons[1] = new ImageIcon(getClass().getResource("Images/stickBlock.png"));
    }

لايتم تكوين صورة اي ان الاستدعاء new ImagIcon يرجع قيمة null وذلك بسبب ان الصورة في ملف غير الملف الذي يستدعى منه البرنامج جرب ان تغير مكان ملف الصور images

لحل المشكلة : غير السطرين الى

myImageIcons[0] = new ImageIcon(getClass().getResource("/Images/cubeBlock.png"));
        myImageIcons[1] = new ImageIcon(getClass().getResource("/Images/stickBlock.png"));
    }

ثم قم بنقل المجلد Images الى خارج المجلد src وضعه في المجلد الاساسي للمشروع

لتعرف من اين يعمل برنامجك

System.out.println(System.getProperty("user.dir"));

طبعا المشكلة تحصل لما تشغل من داخل النت بينز، يعني لو حطيت المجلد Images داخل مجلد الdist فلن تحصل هذه المشكله! لان مسار التشغيل سوف يكون من داخل المجلد dist

بالتوفيق

1

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#3

شكراً لردك ..

الصراحة ال code اشتغل مرة و أظهر شكل ال مكعب لكن بعد كده بدأ يدينى NullPointerException

مع العلم أنى وضعت مجلد الصور خارج ال src ، وضعته فى المجلد الأساسى

------------------------------------------------------------------------------------------

الوضع الجديد للمشروع و ملف الصور >>>>>>>>>> المشروع مرفق

TetrisGame.rar

تم تعديل هذه المشاركة بواسطة mr.beshoy في 12 سبتمبر 2011 في 20:06

#4

لا ادري لماذا ولكنها تعمل عندي من دون اي اكسيبشنز ، هل قمت بتغيير السطرين كما وضحت لك؟

قم بلصق كود الخطأ كاملا في الرد

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#5
mental-driller كتب:

لا ادري لماذا ولكنها تعمل عندي من دون اي اكسيبشنز ، هل قمت بتغيير السطرين كما وضحت لك؟

قم بلصق كود الخطأ كاملا في الرد

Exception in thread "main" java.lang.NullPointerException

at javax.swing.ImageIcon.<init>(ImageIcon.java:138)

at TetrisView.DisplayRandomBlock.<init>(DisplayRandomBlock.java:23)

at TetrisView.TetrisCell.<init>(TetrisCell.java:53)

at TetrisView.MainScreenGui.<init>(MainScreenGui.java:31)

at TetrisView.MyGame.<init>(MyGame.java:21)

at TetrisView.MyGame.main(MyGame.java:27)

دى رسالة الخطأ على نفس المشروع المرفق >>>> أنا عملت كما قولت

و ادى المشروع مرفق مرة تانية ... يبقى جربه و شوفه

TetrisGame.rar

#6

ضع الملف داخل مجلد السورس src ولاتنس انك قمت بتغيير اسم المربع stickBlock.gif الى stickBlock.png

الخطوه هذه ستجعل برنامجك يعمل

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#7

على فكرة صورة ال stick كان امتداها gif , انا فى ال code كاتبه png

        myImageIcons[1] = new ImageIcon(getClass().getResource("/Images/stickBlock.png"));

عدلت الامتداد و مع ذلك بيدينى nullPointerException !!!!!!

تم تعديل هذه المشاركة بواسطة mr.beshoy في 12 سبتمبر 2011 في 23:54

#8

رجع الملف Images لداخل ملف src

No intellectual battle was ever won through retreat
You do not watch Gintama? Dude, you are missing a lot!


صورةmsrgb1485.gif ocajavase7programmerclr.gif

#9

المشكلة اتحلت .

--------------------------

خليت امتداد الصورة gif ... و وضعت المجلد فى ال Src

و اشتغلت ..

المشكلة الأكبر كانت متمثلة فى انى مش بضع علامة ال / قبل اسم الملجلد ال به الصور ( لم أنتبه لها )

        myImageIcons[0] = new ImageIcon(getClass().getResource("Images/cubeBlock.png"));

الكود مرفق

و شكراً لتعبك

TetrisGame.rar

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