2014-11-02 37 views
0
應對公共無效paint()方法

我的問題是,當我使用如何在JFrame中

public void paint(Graphics g) 
{} 

方法繪製一個String作爲

g.drawString("hello java",0,0); 

我完整的代碼

import javax.swing.*; 
import java.awt.*; 
class test 
extends JFrame 
{ 
public void testing() 
{ 
setSize(500,500); 
show(); 
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
public void paint(Graphics g) 
{ super.paint(g); 
g.drawString("HELLO JAVA"); 
} 
public static void main(String arg[]) 
{ 
test t=new test(); 
t.testing(); 
} } 

在JFrame中,我得到一個黑色的屏幕沒有你好java被繪製 請幫我 預先感謝

+0

這並不足以提供合格答案。請給我們一個你的問題最小的工作例子。 - > http://en.wikipedia.org/wiki/Minimal_Working_Example – Thomas 2014-11-02 11:58:58

+0

也許調用'super.paint(g)'首先會幫助 – SomethingSomething 2014-11-02 12:03:26

+0

@thomas看到編輯 – Priyank 2014-11-02 13:54:44

回答

0

要正確顯示繼承幀,在繼承的類塗料方法應該包含)super.paint的呼叫(:

class MyFrame extends JFrame { 

    public void paint(Graphics g) { 
     super.paint(g); 
     g.drawString("hello java", 50, 50); 
    } 

} 

編輯(在面板畫):

import java.awt.*; 
import javax.swing.*; 

public class CustomPaint { 

    public static void main(String[] args) { 
     EventQueue.invokeLater(new Runnable() { 

      public void run() { 
       JFrame frame = new JFrame("CustomPaint"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.add(new MyPanel()); 
       frame.pack(); 
       frame.setLocationByPlatform(true); 
       frame.setVisible(true); 
      } 
     }); 
    } 
} 

class MyPanel extends JPanel { 

    public Dimension getPreferredSize() { 
     return new Dimension(320, 240); 
    } 

    public void paintComponent(Graphics g) { 
     super.paintComponent(g); 
     Graphics2D g2 = (Graphics2D) g; 
     String msg = "HELLO JAVA"; 
     g2.setPaint(Color.BLUE); 
     int w = (getWidth() - g.getFontMetrics().stringWidth(msg))/2; 
     g2.drawString(msg, w, getHeight()/2); 
    } 
} 
+1

不要覆蓋JFrame上的paint()!自定義繪畫是通過覆蓋JPanel上的paintComponent()完成的,然後將面板添加到框架。請參閱[自定義繪畫](http://docs.oracle.com/javase/tutorial/uiswing/painting/index.html)上的Swing教程部分以獲取更多信息和工作示例。 – camickr 2014-11-02 13:47:22

+0

仍然無法正常工作 – Priyank 2014-11-02 13:47:33

+0

你是對的camickr。 Priyank,見編輯後。 – MirecXP 2014-11-02 15:02:13