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

ماهوا الخطا في هذا الكود

مغلق
بدأه akram في 1 فبراير 2005 · 4 رد · 594 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

اردت عمل cards عن طريق استخدام setLayout(new CardLayout()); لكن ينتج دائما خطا لا ادري ماهوا السبب علما ان الخطا اثناء ال run وليس اثتاء الترجمه

ارجوا المساعده

import java.awt.*;
import java.awt.event.*;

public class JavaTest extends Frame {
	Panel[] panels;
	String[] cards = {"Nixt","Privious"};
	Button[] navigateButton = new Button[cards.length];
	Panel navigateButtonPanel = new Panel();
	static int card = 1;

	public static void main(String[] args){
  JavaTest jt = new JavaTest();
	}

	JavaTest(){
  super("java test");
 	 setLayout(new BorderLayout());

   	 
  for(int i=0; i<cards.length; ++i){
 	 navigateButton = new Button(cards);
 	 navigateButton.addActionListener(new ButtonHandler());
 	 navigateButtonPanel.add(navigateButton);
 	 }
 	 add("North", navigateButtonPanel);
 	 panels = new Panel[2];
 	 panels[card].setLayout(new CardLayout());
  for(int i=0; i<cards.length; ++i)
 	 panels[card].add("next card", new Button(cards));
      
 	 setSize(400,400);
 	 addWindowListener(new WindowEventHandler());
 	 show();
 	 
  }

	class WindowEventHandler extends WindowAdapter{
  
  public void windowClosing(WindowEvent e){
 	 System.exit(0);
  }
}	

	class ButtonHandler implements ActionListener{
  public void actionPerformed(ActionEvent ev){
 	 String s = ev.getActionCommand();
  }
	}	
}

زورو موقعنا

www.algabal.com

#2

هذا هو الخطأ الذي كان عليك أن ترفقه مع سؤالك:

Exception in thread "main" java.lang.NullPointerException
        at JavaTest.<init>(JavaTest.java:27)
        at JavaTest.main(JavaTest.java:12)

الخطأ NullPointerException

ويعني هذا أنك تعاملت مع شيء غير موجود أو Null بمعنى آخر.

والخطأ بالتحديد هنا في السطر 27 في الوسيلة أو الميثود الإنشائي Init كما هو موضح في الخطأ بالأعلى:

 at JavaTest.<init>(JavaTest.java:27)

قد كتبت السطر التالي:

panels[card].setLayout(new CardLayout());

فليس لديك Panel موجود فعليا حتى تتحكم فيه.. كان عليك أولا أن تنشئ Panel قبل أن تقوم بالتحكم فيه...

panels[card]=new Panel();

أرجو أن يكون ذلك مفيدا...

#3

الاخ ابومازن شكرا على الرد السرع لقد عدلت الكود كما قلت لكن لم ينفذ كما توقعت

اذ لم يظهر اي CardLayout اذ ارغب في عده Caeds فوق بعضها البعض بحيث يمكن تصفحها الواحد بعد الاخر عند الضغط على Next

import java.awt.*;
import java.awt.event.*;

public class JavaTest2 extends Frame {
Panel[] panels;
String[] cards = {"Nixt","Privious"};
Button[] navigateButton = new Button[cards.length];
Panel navigateButtonPanel = new Panel();
static int card = 1;

public static void main(String[] args){
 JavaTest2 jt = new JavaTest2();
}

JavaTest2(){
 super("java test");
  setLayout(new BorderLayout());

    
 for(int i=0; i<cards.length; ++i){
  navigateButton = new Button(cards);
  navigateButton.addActionListener(new ButtonHandler());
  navigateButtonPanel.add(navigateButton);
  }
  add("North", navigateButtonPanel);
   panels = new Panel[2];
  panels[card]=new Panel();

  panels[card].setLayout(new CardLayout());
 for(int i=0; i<cards.length; ++i)
  panels[card].add("next card", new Button(cards));
     
  setSize(400,400);
  addWindowListener(new WindowEventHandler());
  show();
  
 }

class WindowEventHandler extends WindowAdapter{

 public void windowClosing(WindowEvent e){
  System.exit(0);
 }
} 

class ButtonHandler implements ActionListener{
 public void actionPerformed(ActionEvent ev){
  String s = ev.getActionCommand();
 }
} 
}

زورو موقعنا

www.algabal.com

#4

عندي تعليق بسيط على الكود تبعك يا اكرم في الحقيقة انت لم تفعل اي شئ لمعاجة الاحداث واقصد الاسلوب التالي

اقتباس
class ButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent ev){
 String s = ev.getActionCommand();
}
}

انت هنا قمت بعمل هذا الاسلوب ولكنك لم تستخدمه فقط اخبرته انه في حدث معين في برنامجك ولكن ما الذي يجب عليه فعله لم تخبره .

لست متواجد بشكل يومي

#5

صدقت اخي الفاضل لقد تركت هذا الامر فيما بعد ولقد نسيت انه مهم في هذه المرحله البدائيه

زورو موقعنا

www.algabal.com

هذا الموضوع مغلق.

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…