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

pass two_dim to athor class

بدأه ريحانة الاقصى في 15 أبريل 2011 · 5 رد · 347 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم لقد قمت بتعريف 2 class

لرسم graph يمثل مصفوفة

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

فقمت بعمل ميثود يستقبل المصفوفة في الكلاس الثاني

ولكن لاحظت وجود مشكلة وهي انه في الميثود

class NewPanel extends JPanel {

   int[][] arr=new int[7][7];
   int 	size=7;


  public void enterDest(int y[][]){

     for(int i=0;i<y.length;i++){
     for(int j=0;j<y.length;j++){
       arr[j]=y[j];
       System.out.println(arr[j]);
      }}
  }

يستقبل المصفوفة الافتراضية قبل ادخال القيم اليها فيتعامل معها اصفار

كيف اجعله يتعرف على المصفوفة كاملة

الكود

              import java.util.ArrayList;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
   public class TestPanelDrawing extends JFrame {

 public int  arr[][]={{0,0,6,5,0,2,0},{0,0,-1,-1,0,2,0},{6,-1,0,3,3,2,0},{5,-1,3,0,5,2,0},{0,0,3,5,0,2,0},{2,2,2,2,2,0,7},{0,0,0,0,0,7,0}};


    public TestPanelDrawing() {

  NewPanel s=new NewPanel();
   s.enterDest(arr);
       add(new NewPanel());
     }



    public static void main(String[] args) {
      TestPanelDrawing frame = new TestPanelDrawing();
      frame.setTitle("TestPanelDrawing");
      frame.setLocationRelativeTo(null); // Center the frame
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(600, 400);
      frame.setVisible(true);
    }
  }

 class NewPanel extends JPanel {

   int[][] arr=new int[7][7];
   int 	size=7;


  public void enterDest(int y[][]){

     for(int i=0;i<y.length;i++){
     for(int j=0;j<y.length;j++){
       arr[j]=y[j];
       System.out.println(arr[j]);
      }}
  }

   public  void paintComponent(Graphics g) {
    		Font r = new Font("SansSerif", Font.BOLD, 16);
    	g.setFont(r);

    	if (size==4){

    	Graphics2D g2 = (Graphics2D)g;
      super.paintComponent(g);
      Point2D.Double point = new Point2D.Double(5,5);
     // Ellipse2D.Double a=  new Ellipse2D.Double(6, 6, 20, 20);
      int x0=30;
      int x1=150;
      int y0=20;
      int y1=150;
      int x[]={x0,x1,x0,x1};
      int y[]={y0,y1,y0,y1};
    	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

    Ellipse2D.Double a=  new Ellipse2D.Double(x0+5, y0, 15, 15);
    Ellipse2D.Double b=  new Ellipse2D.Double(x0+5, y1, 15, 15);
    Ellipse2D.Double c=  new Ellipse2D.Double(x1+5, y0, 15, 15);
    Ellipse2D.Double d=  new Ellipse2D.Double(x1+5, y1, 15, 15);
    vert.add(a);
      vert.add(b);
      vert.add(c);
      vert.add(d);

    //g.drawLine((int)a.getX(), (int)a.getY(),(int) b.getX(),(int) b.getY());	

    //for(int f=0;f<4;f++)
    	g.drawString(" A ",x0+15,y0);
    		g.drawString(" B ",x0+15,y1);
    			g.drawString(" C ",x1,y0);
    				g.drawString(" D ",x1+5,y1);


       vert.add(a);
      vert.add(b);
      vert.add(c);
      vert.add(d);



         g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
         g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));


       for(int i=0;i<4;i++){
      for (int j=0;j<4;j++){
      if (arr[j]!=0&&arr[j]!=-1)
     	g.drawLine((int)vert.get(i).getX(), (int)vert.get(i).getY(),(int)vert.get(j).getX(),(int)vert.get(j).getY());


       }	 
       }
    	}



    }
  }

هل السبب انه يتم استدعاء ميثود paint تلقائيا

تم تعديل هذه المشاركة بواسطة ريحانة الاقصى في 15 أبريل 2011 في 15:10

#2

تفضلى

import java.util.ArrayList;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class TestPanelDrawing extends JFrame {

	public int arr[][] = {{0, 0, 6, 5, 0, 2, 0}, {0, 0, -1, -1, 0, 2, 0}, {6, -1, 0, 3, 3, 2, 0}, {5, -1, 3, 0, 5, 2, 0}, {0, 0, 3, 5, 0, 2, 0}, {2, 2, 2, 2, 2, 0, 7}, {0, 0, 0, 0, 0, 7, 0}};
	NewPanel s = new NewPanel();

	public TestPanelDrawing() {
    	add(new NewPanel());
    	s.enterDest(arr);

	}

	public static void main(String[] args) {
    	TestPanelDrawing frame = new TestPanelDrawing();
    	frame.setTitle("TestPanelDrawing");
    	frame.setLocationRelativeTo(null); // Center the frame
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(600, 400);
    	frame.setVisible(true);
	}
}

class NewPanel extends JPanel {

	//public int  arr[][]={{0,0,6,5,0,2,0},{0,0,-1,-1,0,2,0},{6,-1,0,3,3,2,0},{5,-1,3,0,5,2,0},{0,0,3,5,0,2,0},{2,2,2,2,2,0,7},{0,0,0,0,0,7,0}};
	int size = 4;
	int[][] arr;

	public void enterDest(int y[][]) {
    	arr = y;
	}

	@Override
	protected void paintComponent(Graphics g) {
    	super.paintComponent(g);
    	Font r = new Font("SansSerif", Font.BOLD, 16);
    	g.setFont(r);

    	if (size == 4) {

        	Graphics2D g2 = (Graphics2D) g;
        	super.paintComponent(g);
        	Point2D.Double point = new Point2D.Double(5, 5);

        	int x0 = 30;
        	int x1 = 150;
        	int y0 = 20;
        	int y1 = 150;
        	int x[] = {x0, x1, x0, x1};
        	int y[] = {y0, y1, y0, y1};
        	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

        	Ellipse2D.Double a = new Ellipse2D.Double(x0 + 5, y0, 15, 15);
        	Ellipse2D.Double b = new Ellipse2D.Double(x0 + 5, y1, 15, 15);
        	Ellipse2D.Double c = new Ellipse2D.Double(x1 + 5, y0, 15, 15);
        	Ellipse2D.Double d = new Ellipse2D.Double(x1 + 5, y1, 15, 15);
        	vert.add(a);
        	vert.add(b);
        	vert.add(c);
        	vert.add(d);

        	g.drawString(" A ", x0 + 15, y0);
        	g.drawString(" B ", x0 + 15, y1);
        	g.drawString(" C ", x1, y0);
        	g.drawString(" D ", x1 + 5, y1);

        	vert.add(a);
        	vert.add(b);
        	vert.add(c);
        	vert.add(d);

        	g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
        	g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        	g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        	g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));

        	for (int i = 0; i < 4; i++) {
            	for (int j = 0; j < 4; j++) {
                	g.drawLine((int) vert.get(i).getX(), (int) vert.get(i).getY(),
                        	(int) vert.get(j).getX(), (int) vert.get(j).getY());
            	}
        	}
    	}
	}
}

Software Developer
Mahmoudkelany.com


 

#3

شكرا جزيلا

ولكن بعد التعديل حدثت مشكلة اخرى في الكود

لقد كنت اضع متغير اسمه size

واكرر نفس العمليات بحيث اذا كان الحجم مختلف اصبح الان يظهر Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

علما بانه كان يجري الرسم بشكل كامل عندما كنت معرف المصفوفة داخل الكلاس نفسه فما التغير الذي حصل

***الكود طويل ولكنه مكرر ***هل يمكن اختصاره علما بانه يقوم بنفس العمل

           import java.util.ArrayList;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;
   public class TestPanelDrawing extends JFrame {

 public int  arr[][]={{0,0,6,5,0,2,0},{0,0,-1,-1,0,2,0},{6,-1,0,3,3,2,0},{5,-1,3,0,5,2,0},{0,0,3,5,0,2,0},{2,2,2,2,2,0,7},{0,0,0,0,0,7,0}};

    NewPanel s = new NewPanel();

        public TestPanelDrawing() {
        add(new NewPanel());
        s.enterDest(arr);

        }


    public static void main(String[] args) {
      TestPanelDrawing frame = new TestPanelDrawing();
      frame.setTitle("TestPanelDrawing");
      frame.setLocationRelativeTo(null); // Center the frame
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setSize(600, 400);
      frame.setVisible(true);
    }
  }

 class NewPanel extends JPanel {
 //public int  arr[][]={{0,0,6,5,0,2,0},{0,0,-1,-1,0,2,0},{6,-1,0,3,3,2,0},{5,-1,3,0,5,2,0},{0,0,3,5,0,2,0},{2,2,2,2,2,0,7},{0,0,0,0,0,7,0}};

   int size = 7;
        int[][] arr;

        public void enterDest(int y[][]) {
        arr = y;
        }

   public  void paintComponent(Graphics g) {
    		Font r = new Font("SansSerif", Font.BOLD, 16);
    	g.setFont(r);

    	if (size==4){

    	Graphics2D g2 = (Graphics2D)g;
      super.paintComponent(g);
      Point2D.Double point = new Point2D.Double(5,5);
     // Ellipse2D.Double a=  new Ellipse2D.Double(6, 6, 20, 20);
      int x0=30;
      int x1=150;
      int y0=20;
      int y1=150;
      int x[]={x0,x1,x0,x1};
      int y[]={y0,y1,y0,y1};
    	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

    Ellipse2D.Double a=  new Ellipse2D.Double(x0+5, y0, 15, 15);
    Ellipse2D.Double b=  new Ellipse2D.Double(x0+5, y1, 15, 15);
    Ellipse2D.Double c=  new Ellipse2D.Double(x1+5, y0, 15, 15);
    Ellipse2D.Double d=  new Ellipse2D.Double(x1+5, y1, 15, 15);
    vert.add(a);
      vert.add(b);
      vert.add(c);
      vert.add(d);

    //g.drawLine((int)a.getX(), (int)a.getY(),(int) b.getX(),(int) b.getY());	

    //for(int f=0;f<4;f++)
    	g.drawString(" A ",x0+15,y0);
    		g.drawString(" B ",x0+15,y1);
    			g.drawString(" C ",x1,y0);
    				g.drawString(" D ",x1+5,y1);


       vert.add(a);
      vert.add(b);
      vert.add(c);
      vert.add(d);



         g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
         g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));


       for(int i=0;i<4;i++){
      for (int j=0;j<4;j++){
      if (arr[j]!=0&&arr[j]!=-1)
     	g.drawLine((int)vert.get(i).getX(), (int)vert.get(i).getY(),(int)vert.get(j).getX(),(int)vert.get(j).getY());


       }	 
       }
    	}


    	if (size==5){

    	Graphics2D g2 = (Graphics2D)g;
      super.paintComponent(g);
      Point2D.Double point = new Point2D.Double(5,5);
     // Ellipse2D.Double a=  new Ellipse2D.Double(6, 6, 20, 20);
      int x0=30;
      int x1=150;
      int x2=230;
      int y0=20;
      int y1=150;
      int y2=75;
      int x[]={x0,x1,x2};
      int y[]={y0,y1,y2};
    	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

    Ellipse2D.Double a=  new Ellipse2D.Double(x0+5, y0, 15, 15);
    Ellipse2D.Double b=  new Ellipse2D.Double(x0+5, y1, 15, 15);
    Ellipse2D.Double c=  new Ellipse2D.Double(x1+5, y0, 15, 15);
    Ellipse2D.Double d=  new Ellipse2D.Double(x1+5, y1, 15, 15);
    Ellipse2D.Double e=  new Ellipse2D.Double(x2+5, y2, 15, 15);

    vert.add(a);
      vert.add(b);
      vert.add(c);
      vert.add(d);
      vert.add(e);

   // g.drawLine((int)a.getX(), (int)a.getY(),(int) b.getX(),(int) b.getY());	

   // for(int f=0;f<5;f++)
    	g.drawString(" A ",x0+15,y0);
    		g.drawString(" B ",x0+15,y1);
    			g.drawString(" C ",x1,y0);
    				g.drawString(" D ",x1+5,y1);
    	              g.drawString(" E ",x2+5,y2);




         g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
         g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x2, y2, 15, 15));

       for(int i=0;i<5;i++){
      for (int j=0;j<5;j++){
      if (arr[j]!=0&&arr[j]!=-1)
     	g.drawLine((int)vert.get(i).getX(), (int)vert.get(i).getY(),(int)vert.get(j).getX(),(int)vert.get(j).getY());


       }	 
       }
    	}

      //////////////

      	if (size==6){

    	Graphics2D g2 = (Graphics2D)g;
      super.paintComponent(g);
      Point2D.Double point = new Point2D.Double(5,5);
     // Ellipse2D.Double a=  new Ellipse2D.Double(6, 6, 20, 20);
      int x0=30;
      int x1=150;
      int x2=300;
      int y0=20;
      int y1=150;

      int x[]={x0,x1,x2};
      int y[]={y0,y1};
    	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

    Ellipse2D.Double a=  new Ellipse2D.Double(x0+5, y0, 15, 15);
    Ellipse2D.Double b=  new Ellipse2D.Double(x0+5, y1, 15, 15);
    Ellipse2D.Double c=  new Ellipse2D.Double(x1+5, y0, 15, 15);
    Ellipse2D.Double d=  new Ellipse2D.Double(x1+5, y1, 15, 15);
    Ellipse2D.Double e=  new Ellipse2D.Double(x2+5, y0, 15, 15);
    Ellipse2D.Double f=  new Ellipse2D.Double(x2+5, y1, 15, 15);
    vert.add(a);
      vert.add(b);
      vert.add(c);
      vert.add(d);
      vert.add(e);
      vert.add(f);

    	g.drawString(" A ",x0+15,y0);
    		g.drawString(" B ",x0+15,y1);
    			g.drawString(" C ",x1,y0);
    				g.drawString(" D ",x1+5,y1);
    	              g.drawString(" E ",x2+5,y0);
    	               g.drawString(" F ",x2+5,y1);



         g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
         g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x2, y0, 15, 15));
       g2.fill(new Ellipse2D.Double(x2, y1, 15, 15));




       for(int i=0;i<6;i++){
      for (int j=0;j<6;j++){
      if (arr[j]!=0&&arr[j]!=-1)
     	g.drawLine((int)vert.get(i).getX(), (int)vert.get(i).getY(),(int)vert.get(j).getX(),(int)vert.get(j).getY());


       }	 
       }
    	}

      /////////
      	if (size==7){

    	Graphics2D g2 = (Graphics2D)g;
      super.paintComponent(g);
      Point2D.Double point = new Point2D.Double(5,5);
     // Ellipse2D.Double a=  new Ellipse2D.Double(6, 6, 20, 20);
      int x0=30;
      int x1=150;
      int x2=300;
      int x4=450;
      int y0=20;
      int y1=150;
      int y2=75;

      int x[]={x0,x1,x2,x4};
      int y[]={y0,y1,y2};
    	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

    Ellipse2D.Double a=  new Ellipse2D.Double(x0+5, y0, 15, 15);
    Ellipse2D.Double b=  new Ellipse2D.Double(x0+5, y1, 15, 15);
    Ellipse2D.Double c=  new Ellipse2D.Double(x1+5, y0, 15, 15);
    Ellipse2D.Double d=  new Ellipse2D.Double(x1+5, y1, 15, 15);
    Ellipse2D.Double e=  new Ellipse2D.Double(x2+5, y0, 15, 15);
    Ellipse2D.Double f=  new Ellipse2D.Double(x2+5, y1, 15, 15);
    Ellipse2D.Double t=  new Ellipse2D.Double(x4+5, y2, 15, 15);

      vert.add(a);
      vert.add(b);
      vert.add(c);
      vert.add(d);
      vert.add(e);
      vert.add(f);
      vert.add(t);

    	g.drawString(" A ",x0+15,y0);
    		g.drawString(" B ",x0+15,y1);
    			g.drawString(" C ",x1,y0);
    				g.drawString(" D ",x1+5,y1);
    	              g.drawString(" E ",x2+5,y0);
    	               g.drawString(" F ",x2+5,y1);
                        g.drawString(" G ",x4+5,y2);


         g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
         g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));
        g2.fill(new Ellipse2D.Double(x2, y0, 15, 15));
       g2.fill(new Ellipse2D.Double(x2, y1, 15, 15));
       g2.fill(new Ellipse2D.Double(x4, y2, 15, 15));


       for(int i=0;i<7;i++){
      for (int j=0;j<7;j++){
      if (arr[j]!=0&&arr[j]!=-1){

     	g.drawLine((int)vert.get(i).getX(), (int)vert.get(i).getY(),(int)vert.get(j).getX(),(int)vert.get(j).getY());

     }
       }	 
       }
    	}

    }
  }
#4
Mahmoud Kelany كتب:

تفضلى

import java.util.ArrayList;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class TestPanelDrawing extends JFrame {

	public int arr[][] = {{0, 0, 6, 5, 0, 2, 0}, {0, 0, -1, -1, 0, 2, 0}, {6, -1, 0, 3, 3, 2, 0}, {5, -1, 3, 0, 5, 2, 0}, {0, 0, 3, 5, 0, 2, 0}, {2, 2, 2, 2, 2, 0, 7}, {0, 0, 0, 0, 0, 7, 0}};
	NewPanel s = new NewPanel();

	public TestPanelDrawing() {
    	add(new NewPanel());
    	s.enterDest(arr);

	}

	public static void main(String[] args) {
    	TestPanelDrawing frame = new TestPanelDrawing();
    	frame.setTitle("TestPanelDrawing");
    	frame.setLocationRelativeTo(null); // Center the frame
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(600, 400);
    	frame.setVisible(true);
	}
}

class NewPanel extends JPanel {

	//public int  arr[][]={{0,0,6,5,0,2,0},{0,0,-1,-1,0,2,0},{6,-1,0,3,3,2,0},{5,-1,3,0,5,2,0},{0,0,3,5,0,2,0},{2,2,2,2,2,0,7},{0,0,0,0,0,7,0}};
	int size = 4;
	int[][] arr;

	public void enterDest(int y[][]) {
    	arr = y;
	}

	@Override
	protected void paintComponent(Graphics g) {
    	super.paintComponent(g);
    	Font r = new Font("SansSerif", Font.BOLD, 16);
    	g.setFont(r);

    	if (size == 4) {

        	Graphics2D g2 = (Graphics2D) g;
        	super.paintComponent(g);
        	Point2D.Double point = new Point2D.Double(5, 5);

        	int x0 = 30;
        	int x1 = 150;
        	int y0 = 20;
        	int y1 = 150;
        	int x[] = {x0, x1, x0, x1};
        	int y[] = {y0, y1, y0, y1};
        	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();

        	Ellipse2D.Double a = new Ellipse2D.Double(x0 + 5, y0, 15, 15);
        	Ellipse2D.Double b = new Ellipse2D.Double(x0 + 5, y1, 15, 15);
        	Ellipse2D.Double c = new Ellipse2D.Double(x1 + 5, y0, 15, 15);
        	Ellipse2D.Double d = new Ellipse2D.Double(x1 + 5, y1, 15, 15);
        	vert.add(a);
        	vert.add(b);
        	vert.add(c);
        	vert.add(d);

        	g.drawString(" A ", x0 + 15, y0);
        	g.drawString(" B ", x0 + 15, y1);
        	g.drawString(" C ", x1, y0);
        	g.drawString(" D ", x1 + 5, y1);

        	vert.add(a);
        	vert.add(b);
        	vert.add(c);
        	vert.add(d);

        	g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
        	g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        	g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        	g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));

        	for (int i = 0; i < 4; i++) {
            	for (int j = 0; j < 4; j++) {
                	g.drawLine((int) vert.get(i).getX(), (int) vert.get(i).getY(),
                        	(int) vert.get(j).getX(), (int) vert.get(j).getY());
            	}
        	}
    	}
	}
}

شكرا جزيلا على المساعدة

ولكن هل قمت بتغير شي داخل كود الرسم ...انا لم الاحظ تغير ولكن اذا غيرت ال size الى شي غير 4 يظهر

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

at NewPanel.paintComponent(r.java:91)

علما بان حجم المصفوفة 7

#5

بلاش شرط الـif الذى قبل الرسم

 if (arr[j] != 0 && arr[j] != -1) {

فى كل مره

for (int i = 0; i < 4; i++) {
            	for (int j = 0; j < 4; j++) {
//                	if (arr[j] != 0 && arr[j] != -1) {
                    	g.drawLine((int) vert.get(i).getX(), (int) vert.get(i).getY(), (int) vert.get(j).getX(), (int) vert.get(j).getY());
//                	}


            	}
        	}

وهى هتشتغل ع طول ومش هيطلع لك NullPointerException

بالنسبه لتقليل الكود

يمكنك عمل داله تأخذ بعض المتغيرات فالكود واستدعائها اكثر من مره

Software Developer
Mahmoudkelany.com


 

#6

الكود مختصر

لكن خلى بالك انك اثناء الرسم انك لم تتعاملى مع المصفوفه ابدا

لكن هذا هو الكود المختصر بناء على ما قومتى بيه

import java.util.ArrayList;
import java.awt.*;
import java.awt.geom.*;
import javax.swing.*;

public class TestPanelDrawing extends JFrame {

	public int arr[][] = {
    	{0, 0, 6, 5, 0, 2, 0},
    	{0, 0, -1, -1, 0, 2, 0},
    	{6, -1, 0, 3, 3, 2, 0},
    	{5, -1, 3, 0, 5, 2, 0},
    	{0, 0, 3, 5, 0, 2, 0},
    	{2, 2, 2, 2, 2, 0, 7},
    	{0, 0, 0, 0, 0, 7, 0}};
	NewPanel s = new NewPanel(arr);

	public TestPanelDrawing() {
    	add(new NewPanel(arr));
    	s.enterDest(arr);

	}

	public static void main(String[] args) {
    	TestPanelDrawing frame = new TestPanelDrawing();
    	frame.setTitle("TestPanelDrawing");
    	frame.setLocationRelativeTo(null); // Center the frame
    	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	frame.setSize(600, 400);
    	frame.setVisible(true);
	}
}

class NewPanel extends JPanel {

	public NewPanel(int y[][]) {
    	enterDest(y);
	}
	int size;
	int[][] paintArr;

	public void enterDest(int y[][]) {
    	paintArr = y;
    	size = paintArr[0].length;
    	repaint();
	}

	@Override
	public void paint(Graphics g) {
    	Font r = new Font("SansSerif", Font.BOLD, 16);
    	g.setFont(r);
    	draw(g, size);
	}

	public void draw(Graphics g, int n) {
    	if (n > 0) {
        	Graphics2D g2 = (Graphics2D) g;
        	super.paint(g);
        	int x0 = 30;
        	int x1 = 150;
        	int x2 = 300;
        	int x4 = 450;
        	int y0 = 20;
        	int y1 = 150;
        	int y2 = 75;
        	ArrayList<Ellipse2D.Double> vert = new ArrayList<Ellipse2D.Double>();
        	Ellipse2D.Double a = new Ellipse2D.Double(x0 + 5, y0, 15, 15);
        	Ellipse2D.Double b = new Ellipse2D.Double(x0 + 5, y1, 15, 15);
        	Ellipse2D.Double c = new Ellipse2D.Double(x1 + 5, y0, 15, 15);
        	Ellipse2D.Double d = new Ellipse2D.Double(x1 + 5, y1, 15, 15);
        	vert.add(a);
        	vert.add(b);
        	vert.add(c);
        	vert.add(d);

        	g.drawString(" A ", x0 + 15, y0);
        	g.drawString(" B ", x0 + 15, y1);
        	g.drawString(" C ", x1, y0);
        	g.drawString(" D ", x1 + 5, y1);

        	g2.fill(new Ellipse2D.Double(x0, y0, 15, 15));
        	g2.fill(new Ellipse2D.Double(x0, y1, 15, 15));
        	g2.fill(new Ellipse2D.Double(x1, y0, 15, 15));
        	g2.fill(new Ellipse2D.Double(x1, y1, 15, 15));

        	if (n >= 5) {
            	Ellipse2D.Double e = new Ellipse2D.Double(x2 + 5, y0, 15, 15);
            	vert.add(e);
            	g.drawString(" E ", x2 + 5, y0);
            	g2.fill(new Ellipse2D.Double(x2, y0, 15, 15));
        	}
        	if (n >= 6) {
            	Ellipse2D.Double f = new Ellipse2D.Double(x2 + 5, y1, 15, 15);
            	vert.add(f);
            	g.drawString(" F ", x2 + 5, y1);
            	g2.fill(new Ellipse2D.Double(x2, y1, 15, 15));
        	}
        	if (n >= 7) {
            	Ellipse2D.Double t = new Ellipse2D.Double(x4 + 5, y2, 15, 15);
            	vert.add(t);
            	g.drawString(" G ", x4 + 5, y2);
            	g2.fill(new Ellipse2D.Double(x4, y2, 15, 15));
        	}
        	for (int i = 0; i < n; i++) {
            	for (int j = 0; j < n; j++) {
                	g.drawLine((int) vert.get(i).getX(), (int) vert.get(i).getY(), (int) vert.get(j).getX(), (int) vert.get(j).getY());
            	}
        	}
    	}
	}
}
1

Software Developer
Mahmoudkelany.com


 

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