2014-02-23 64 views
0

我想在我的JFrame上繪製使用paint()的東西。我不能讓它顯示。爲什麼?如何在JFrame或任何JComponent上繪圖?

claass DrawOn extends JFrame{ 
    public static void main(String args[]){ 
    new DrawOn(); 
    } 

    public DrawOn(){ 
    setVisible(true); 
    pack(); 
    } 

    paint(Graphics g){ 
    g.drawOval(10,10,100,100); 
    } 
} 
+0

可能的重複:http://stackoverflow.com/questions/13404398/using-paintcomponent-to-draw-rectangle-in-jframe – BitNinja

+0

閱讀[自定義繪畫](http:// docs.oracle.com/javase/tutorial/uiswing/painting/index.html)的工作示例和解釋如何繪畫的作品。 – camickr

回答

0

你應該畫一個JPanel

JPanel panel = new JPanel() 
{ 
    @Override 
    protected void paintComponent(Graphics g) 
    { 
     // TODO Auto-generated method stub 
     super.paintComponent(g); 
     g.drawOval(10, 10, 100, 100); 
    } 
}; 

不要忘記添加JPanelJFrame

add(panel); 

代碼:

public DrawOn() 
{ 

    JPanel panel = new JPanel() 
    { 
     @Override 
     protected void paintComponent(Graphics g) 
     { 
      // TODO Auto-generated method stub 
      super.paintComponent(g); 
      g.drawOval(10, 10, 100, 100); 
     } 
    }; 

    add(panel); 
    setPreferredSize(new Dimension(200, 200)); 
    setVisible(true); 
    pack(); 
} 

注意:您可以創建一個類擴展JPanel而不是使用匿名類,以便您的代碼更清晰。

+0

請勿使用setPreferredSize()。如Swing教程中所示,重寫自定義面板的getPreferredSize()方法。 – camickr

+0

@camickr爲什麼?你能提供一個指向該部分教程的鏈接嗎? – Christian

+0

不知道本教程,但請參閱[是否應避免使用Java Swing中的set(Preferred | Maximum | Minimum)Size方法?](http://stackoverflow.com/q/7229226/418556)(是。) –