2012-10-31 2 views
3

자바 초보자입니다. Graphics, JFrame에 무작위 점을 그려 넣으려고했지만 프레임이 없으면 컴파일 할 때 왜 논리가 괜찮습니까? + 아니오 오류.2D 그래픽을 사용하여 Java에서 무작위 점을 그릴 때

public class parent extends JPanel {  

    public void PaintComponent (Graphics g)  
    { 
     super.paintComponent(g); 
     Graphics2D g2d = (Graphics2D) g; 
     g2d.setColor(Color.blue); 
     Dimension size = getSize(); 
     Insets insets= getInsets(); 
     int w = size.width - insets.left - insets.right; 
     int h = size.height - insets.top - insets.bottom; 
     Random r = new Random(); 

     for (int i=0; i<1000; i++) { 
      int x = Math.abs(r.nextInt()) % w; 
      int y = Math.abs(r.nextInt()) % h; 
      g2d.drawLine(x, y, x, y); 
     } 
    } 


    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame("Points"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(new parent()); 
     frame.setSize(250, 200); 
     frame.setVisible(true); 
    } 
} 

답변

2

음이 PaintComponent 또는이 paintComponent을해야 무슨 잘못 여기 누군가가 나를 도울 수 있습니까? 자바 개발자가 어떤 개발자를 선택할지 알 것 같습니다.

주석에있는 @Override이 Eclipse에서 잡을 수있는 완벽한 버그입니다.

0

코드에서 DrawLine을 사용하여 (x, y)에서 (x, y)까지 그립니다. 하나의 픽셀이 될 것입니다. 그리고 당신은 컬러 블루를 설정했습니다. 따라서 색상에 관계없이 잘 보일 수 없습니다.

그러나 루프는 난수 R을 기반으로 X 및 Y 값을 계산하지만 R은 결코 새로운 난수로 다시 계산되지 않습니다 (루프 전에 한 번 설정하고 다시 설정하지 않음).). 그러면 똑같은 점을 다시 1000 번 반복해서 다시 그릴 것입니다.

임의 수 계산을 루프 안에 넣고 무작위 지점을 중심으로 반경이 5 ~ 10 픽셀 인 원을 그립니다. 훨씬 더 눈에.니다. 그리고 나서 목표를 성취하는 길에 있어야합니다.

+0

당신의 고마워,하지만 각 반복에서 % 너비 또는 % 높이를 사용하여 새로운 무작위로 안돼 점점 더 고유 한, 그리고 전에 다음 반복에 대한 이전에 하나의 플롯, 그게 좋은 문제 PaintComponent – Sikander

관련 문제