גאווה . ציור מערך של מעגלים - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

גאווה . ציור מערך של מעגלים


Dror Arasheven

Recommended Posts

תגידו אחרי שרשמתי את הפונקציה הזאת .
 

private void oval(Graphics g , int x ,int y , int z , int w) {
g.drawOval(x, y, z, w);
}


כול מה שאני צריך לעשות זה להפעיל אותה על 4 משתנים ? 
שאלה שניה בלולאה מקוננת בלולאה הפנימית אני משנה את ערכי Y ובחיצונית את X ?

קישור לתוכן
שתף באתרים אחרים


import java.awt.Color;
import java.awt.Graphics;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
 
public class circle extends JPanel{
	public static void claerscreen () {
		System.out.print ("\u000c");
	}
	private static final long serialVersionUID = 1L;
	public circle (){
		setName("circles");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(500,500);
		setVisible(true);
	}
	public void paint(Graphics g){
		super.paint(g);
		int n;
		String num=JOptionPane.showInputDialog(null,"Enter number of ellipses");
		n=Integer.parseInt(num);
		
			
			for (int x=0;x<500;x+=500/n){
				for (int y=0;y<500;y+=500/n){
			Random rn = new Random();
		    int answer = rn.nextInt(3) + 1;
		    if (answer==1)	
		    	g.setColor(Color.WHITE) ;
		    else if (answer==2)	
		    	g.setColor(Color.BLACK) ;
		    else	
		    	g.setColor(Color.GRAY) ;
                g.fillOval(x,y,500/n,500/n);
               
				}
			}   
        }
	public static void main (String arg[]) {
		circle t = new circle();
		t.paint(null);
		
	}
	
}

זה מה שעשיתי עד עכשיו . אני צריך להוסיף עוד פונקציה שאמורה 'לרענן' צבעים לפי דרישה ואני לא יודע איך לעשות זאת . בנוסף הוא מודיע לי שיש בעיה בשורה.

	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

 

קישור לתוכן
שתף באתרים אחרים

הפונקציה paint נקראת כל פעם שהתוכנה צריכה לצייר מחדש את האובייקט. הבעיה היא שאתה לא יכול לדעת בדיוק מתי היא תיקרא. אם אתה רוצה לשלוט על זה, אז אתה צריך פונקציה נוספת שגורמת לבחירה האקראית של הצבעים ותשמור אותם בתוך משתנה פנימי של המחלקה, ואז הפונקציה paint רק תצייר מחדש את העיגולים לפי הצבעים שבחרת מראש. כל פעם שאתה רוצה להחליף את הצבעים, רק צריך לקרוא לפונקציה הנוספת הזו ואז להכריח את התוכנה לצייר מחדש את האובייקט באמצעות הפונקציה repaint.

 

חוץ מזה:

א. ל-JPanel אין פונקציה בשם setDefaultCloseOperation, בגלל זה אתה מקבל שגיאה.

ב. בשביל לעשות גרפיקה אתה צריך אובייקט JFrame.

ג. אל תיצור כל פעם אובייקט Random חדש, כי זה יגרום לכך שהבחירות שלו לא יהיו אקראיות. תיצור אובייקט אחד כזה ותשמור אותו בתור איבר של המחלקה.

 

נ.ב. מה הקשר בין הכותרת של הדיון לשאלה שלך? תערוך בבקשה את הכותרת בהתאם.

קישור לתוכן
שתף באתרים אחרים


import javax.swing.JPanel;
 
public class paint extends JPanel{
	public static void claerscreen () {
		System.out.print ("\u000c");
	}
	private static final long serialVersionUID = 1L;
	 int n;
	
	
		
	public paint(Graphics g,int z){
		super.paint(g);
		Color  w ;
		n=z;
		
	  
			for (int x=0;x<500;x+=500/n){
				for (int y=0;y<500;y+=500/n){
					Random rn = new Random();
				    int answer = rn.nextInt()*3 + 1;
				    if (answer==1)	
				    	w= Color.WHITE ;
				    else if (answer==2)	
				    	w= Color.BLACK ;
				    else	
				    	w= Color.GRAY;
		    	g.setColor( w) ;
                g.fillOval(x,y,500/n,500/n);
               
				}
			}   
        }


}
import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class draw {


	public static void claerscreen () {
		System.out.print ("\u000c");
	}


		public static void main (String arg[]) {
			int n;
			String num=JOptionPane.showInputDialog(null,"Enter number of ellipses");
			n=Integer.parseInt(num);
			JFrame t = new JFrame();
			paint drawing=new paint( null, n);
			t.add(drawing);
			t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
			t.setSize(500,500);
			t.setVisible(true);
			
		}
	}

	

תיקנתי . הבעיה שזה לא רץ והוא אומר שיש בעית הרצה בשורת פקודה לבחירת צבע

קישור לתוכן
שתף באתרים אחרים

ברור, אתה מנסה לעשות showInputDialog ומעביר לו null בתור פרמטר.

תחפש דוגמאות נכונות לשימוש בפונקציה הזו ותשתמש בה נכון.

אותו דבר לגבי שאר הקוד שלך - נראה שאתה חצי מנחש ומקווה שזה יעבוד, במקום להתחיל מדוגמאות קוד שעובדות.

חפש בגוגל דוגמת קוד נכונה של איך אמורים לעבוד עם JPanel ותיקח את זה משם.

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...