2016-10-10 13 views
0

私は本当に明白な何かが不足していると思いますが、何とかこのコードは空のウィンドウを与えますが、赤い楕円形を描いていません。私は何が欠けていますか?Javaスイングで単純な円を描くことはできません

public class Test extends JPanel { 

    @Override 
    public void paintComponent(Graphics g) { 
     super.paintComponents(g); 
     g = this.getGraphics(); 
     Graphics2D g2 = (Graphics2D) g; 

     // Anti-aliasing 
     g2.setColor(new Color(255, 0, 0)); 
     g2.fillOval(0, 0, 20, 20); 
    } 

    public static void main(String[] args) { 
     JFrame frame = new JFrame("Ball"); 
     Test panel = new Test(); 

     frame.getContentPane().add(panel); 
     frame.setPreferredSize(new Dimension(250, 200)); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     frame.pack(); 
     frame.setVisible(true); 
    } 

} 
+2

を除去し、正しくない;'まず、そのナンセンスを取り除きます。ペイントを行うための有効な 'Graphics'オブジェクトはすでに存在します。 –

+0

paintComponentに渡されたGraphicsを使用します。 –

答えて

4

paintComponent `G = this.getGraphics()この​​

public void paintComponent(Graphics g) { 
    super.paintComponent(g); 
    Graphics2D g2d = (Graphics2D)g; 

    Ellipse2D.Double circle = new Ellipse2D.Double(xR, yR, diameter, diameter); 
    g2d.fill(circle); 
    ... 
} 
関連する問題