2013-06-12 5 views
1

이것은 나를 완전히 미치게했습니다. 이 사각형을 표시 할 수 없습니다. 나는 프로그래밍에 익숙하지 않고 학습 경험으로 2D에서 퐁을 재현하려고합니다. 여기 코드는 : 다음Drawrect not working (Java)

package ping; 
import javax.swing.*; 

public class Pong extends JFrame implements MouseListener { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
/** 
* @param args 
*/ 
public Pong(String title) { 
    this.setTitle(title); 
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    this.getContentPane().setBackground(Color.RED); 
    this.getContentPane().setLayout(null); 
    this.setSize(500, 500); 
    Paddles a = new Paddles(), b = new Paddles(); 
    a.setBounds(225, 25, 50, 10); b.setBounds(225, 475, 50, 10); 
    this.getContentPane().add(a); this.getContentPane().add(b); 
    a.setVisible(true); b.setVisible(true); 
    this.getContentPane().addMouseListener(this); 
    this.setVisible(true); 
} 
public static void main(String[] args) { 
    // TODO Auto-generated method stub 
     Pong game = new Pong("Java Pong");} 

그리고 심폐 클래스 : 사전에

import java.awt.Graphics; 
import java.awt.Color; 
import javax.swing.JComponent; 
public class Paddles extends JComponent { 

/** 
* 
*/ 
private static final long serialVersionUID = 1L; 
public Paddles() {} 
public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.BLACK); 
    g.drawRect(0,0,0,0); 
    g.fillRect(0,0,0,0); 
    System.out.println("paintworks"); 
    System.out.println(Integer.toString(this.getY())); 
} 

} 

감사합니다!

+3

직사각형의 크기는 0입니다. 시도 g.drawRect (x, y, 10,10); – BevynQ

+2

@BevynQ : 그 대답을 원할 수도 있습니다! –

+1

@BevynQ 둘째, 대답 해주세요 ... 원하는 이유 : P – MadProgrammer

답변

1
g.drawRect(0,0,0,0); 
g.fillRect(0,0,0,0); 

이 두 줄은 크기가없는 것을 나타냅니다. 마지막 두 매개 변수는 너비와 높이를 나타내야합니다.

자세한 내용은 javadoc을 참조하십시오.

4

너비가 0 인 사각형이 있습니다.

이것은 업데이트 된 방법입니다.

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    g.setColor(Color.BLACK); 
    g.drawRect(this.x,this.y,10,10); // look at the api this command is redundant 
    g.fillRect(this.x,this.y,10,10); // as fill rect will overdraw it anyway. 
    System.out.println("paintworks"); 
    System.out.println(Integer.toString(this.getY())); 
}