2012-01-10 47 views
7

Tôi là một lập trình viên khao khát nhưng hôm nay là bài học Java đầu tiên của tôi.Vẽ văn bản với đối tượng đồ họa trên 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); 
} 

Với mã trên, tôi muốn viết một câu trên cửa sổ nhưng nó không bao giờ viết. Tôi đang làm gì sai?

Chỉnh sửa: Không sao - Sơn phải được sơn. Tôi xin lỗi rất nhiều.

Trả lời

13

Trong mã đã cho, wha t bạn muốn là

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

Một ví dụ làm việc cho bạn tham khảo:

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

Cảm ơn các bạn - tôi đã được sao chép và dán. Có lẽ tôi nên xem mã của tôi một số chi tiết! P.s. nên có ghi đè phương pháp sơn .... NGAY BÂY GIỜ CÔNG TRÌNH NÀY Cảm ơn –

+0

@Sanjay vui lòng đọc điểm của tôi '2) cho Swing JComponents là paintComponent() ', sau đó vui lòng sửa đổi bài viết của bạn,' blablabla' Tôi biết rằng tất cả các code_depots chứa phương thức paint thay vì paintComponent 'balblabla' – mKorbel

3

1) không thể sơn trực tiếp đến JFrame, bạn có thể sơn:

  • đặt ở đó JPanel

  • getContentPane từ JFrame

2) cho Swing JComponents là có paintComponent() thay vì paint(), nếu không bức tranh của bạn không thể drawed corretly

3) tùy chọn khác bao gồm:

  • sơn để sơn JFrame's RootPane

  • đến JFrame's GlassPane

4) ở 2D Graphics hướng dẫn

Các vấn đề liên quan