2012-01-10 51 views
7

我是一個狂熱的程序員,但今天是我的第一個Java課程。在JFrame上使用圖形對象繪製文本

public void Paint (Graphics g) 
{ 
    if(g instanceof Graphics2D) 
    { 
     Graphics2D g2d = (Graphics2D)g; 
     g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON); 
    } 
    g.drawString("This is gona be awesome", 200, 200); 
} 

有了上面的代碼,我想寫一個句子在窗口上,但它從來沒有寫。我究竟做錯了什麼?

編輯:沒關係 - 油漆必須是油漆。我非常抱歉。

回答

13

在給定的代碼,wha你想t是

g2d.drawString("This is gona be awesome", 200, 200); 
^

工作示例,供您參考:

package Experiments; 
import java.awt.Container; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.RenderingHints; 

import javax.swing.JComponent; 
import javax.swing.JFrame; 

public class MainClass{ 
    public static void main(String[] args) { 
    JFrame jf = new JFrame("Demo"); 
    Container cp = jf.getContentPane(); 
    MyCanvas tl = new MyCanvas(); 
    cp.add(tl); 
    jf.setSize(300, 200); 
    jf.setVisible(true); 
    } 
} 

class MyCanvas extends JComponent { 

    @Override 
    public void paintComponent(Graphics g) { 
     if(g instanceof Graphics2D) 
     { 
     Graphics2D g2 = (Graphics2D)g; 
     g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, 
     RenderingHints.VALUE_ANTIALIAS_ON); 

     g2.drawString("This is gona be awesome",70,20); 
     } 
    } 
} 
+0

謝謝你們 - 我一直在複製和粘貼。 也許我應該看看我的代碼更多! P.s.應該overrided paint方法.... 現在它工作正常 感謝 – 2012-01-10 11:23:55

+0

@Sanjay請閱讀我點'2)搖擺JComponents是存在的paintComponent()',那麼請修改您的文章,'blablabla'我知道所有code_depots都包含paint方法而不是paintComponent'balblabla' – mKorbel 2012-01-10 11:50:23

3

1)不能直接畫到JFrame,你可以畫:

  • 放在那裏JPanel

  • 的getContentPane從JFrame

2)搖擺JComponentspaintComponent()而不是paint(),否則你的畫不可能drawed corretly

3)另一個選項是:

  • 油漆到JFrame's RootPane

  • 油漆到JFrame's GlassPane

4)更2D Graphics教程