2016-04-10 16 views
-1

JPanel'in her yerinde rastgele bir şekilde ortaya çıkması beklenen bir JPanel çemberi, çizgi ve dikdörtgenler oluşturdum, ancak çevreler ve dikdörtgenler sadece JPanel boyunca rastgele bir şekilde JPanel'in sol üst köşesinde görünürken, çizgiler mükemmel çalışır. Birinin bana yardım edip edemeyeceğini merak ediyordum.Tüm şekillerim neden JPanel'imin sol tarafında sıkıştı?

import java.awt.Color; 
import java.awt.Graphics; 
import java.util.Random; 
import javax.swing.JPanel; 

/** 
* 
* 
*/ 
public class RandomShapesPanel extends JPanel 
{ 
    private Color rColor; 
    private Random rGen; 
    private Random num; 

    @Override 
    protected void paintComponent(Graphics g) 
    { 
    super.paintComponent(g); 
    int x = this.getWidth(); 
    int y = getHeight(); 
    int x1, y1, x2, y2; 
    rGen = new Random(); 
    num = new Random(); 
    for(int i = 1; i <= 35; i++) 
    { 
     rColor = new Color(rGen.nextInt(256),rGen.nextInt(256), 
       rGen.nextInt(256)); 
     g.setColor(rColor); 
     x1 = rGen.nextInt(x - 1) + 1; 
     x2 = rGen.nextInt(x - 1) + 1; 
     y1 = rGen.nextInt(y - 1) + 1; 
     y2 = rGen.nextInt(y - 1) + 1; 
     g.drawLine(x1, y1, x2, y2); 
    } 
    for(int i = 1; i <= 35; i++) 
    { 
     rColor = new Color(rGen.nextInt(256),rGen.nextInt(256), 
       rGen.nextInt(256)); 
     g.setColor(rColor); 
     x1 = num.nextInt(50) + 10; 
     x2 = num.nextInt(50) + 10; 
     y1 = num.nextInt(50) + 10; 
     y2 = num.nextInt(50) + 10; 
     g.drawRect(x1, y1, x2, y2); 
    } 
    for(int i = 1; i <= 35; i++) 
    { 
     rColor = new Color(rGen.nextInt(256),rGen.nextInt(256), 
       rGen.nextInt(256)); 
     g.setColor(rColor); 
     x1 = num.nextInt(50) + 10; 
     x2 = num.nextInt(50) + 10; 
     y1 = num.nextInt(50) + 10; 
     y2 = num.nextInt(50) + 10; 
     g.fillRect(x1, y1, x2, y2); 
    } 
    for(int i = 1; i <= 35; i++) 
    { 
     rColor = new Color(rGen.nextInt(256),rGen.nextInt(256), 
       rGen.nextInt(256)); 
     g.setColor(rColor); 
     x1 = num.nextInt(50) + 10; 
     x2 = num.nextInt(50) + 10; 
     y1 = num.nextInt(50) + 10; 
     y2 = num.nextInt(50) + 10; 
     g.drawOval(x1, y1, x2, y2); 
    } 
    for(int i = 1; i <= 35; i++) 
    { 
     rColor = new Color(rGen.nextInt(256),rGen.nextInt(256), 
       rGen.nextInt(256)); 
     g.setColor(rColor); 
     x1 = num.nextInt(50) + 10; 
     x2 = num.nextInt(50) + 10; 
     y1 = num.nextInt(50) + 10; 
     y2 = num.nextInt(50) + 10; 
     g.fillOval(x1, y1, x2, y2); 
    } 
    } 
} 
+1

Ah bu açık olmalı şimdi gel - Sen çizgiler, dikdörtgenler ve –

+0

mi çevreler için farklı nextInt aradığınız bak nasıl Bu senin kodun, ya da anlamadığın kodu ödünç aldın mı? –

+0

Üzgün ​​olduğun için üzgünüm, ama kendi koduna bakmamış gibi soruyorsun. Gelecekte, lütfen en azından kodunuzu göndermeden önce inceleyin. –

cevap

-1

Böyle bunlar tanımlamak zorunda:

for(int i = 1; i <= 35; i++) 
{ 
    rColor = new Color(rGen.nextInt(256),rGen.nextInt(256), 
      rGen.nextInt(256)); 
    g.setColor(rColor); 
    x1 = num.nextInt(x-50) + 10; 
    x2 = num.nextInt(50) + 10; 
    y1 = num.nextInt(y-50) + 10; 
    y2 = num.nextInt(50) + 10; 
    g.drawRect(x1, y1, x2, y2); 
}