2014-10-09 153 views
0

所以我想在Eclipse中做一个项目,我的Eclipse没有显示任何东西。 我的意思是,代码很好,但它只是打开一个窗口,它不显示任何内容,当它应该显示一行。Java图形不显示任何东西

FirstGraph.java

import java.awt.Graphics; 

import javax.swing.JFrame; 

public class FirstGraph extends JFrame { 

    private static final long serialVersionUID = 1L; 

    public static void main(String[] args) { 
     JFrame f = new JFrame(); 
     f.setName("First Graph"); 
     f.setSize(300, 300); 
     f.setVisible(true); 
     f.setBounds(30, 30, 300, 300); 
     f.getContentPane().add(new MyCanvas()); 
     f.setVisible(true); 
    } 

    public void Paint(Graphics g) { 
     g.drawLine(50, 50, 250, 280); 
    } 
} 

MyCanvas.java

import java.awt.Graphics; 

import javax.swing.JComponent; 

public class MyCanvas extends JComponent{ 

    private static final long serialVersionUID = -2508263540396372610L; 

    public void Paint(Graphics g){ 
     int[] x; 
     x = new int[]{40, 125, 256, 290}; 
     int[] y; 
     y = new int[]{50, 115, 279, 295}; 

     g.drawPolygon(x, y, x.length); 
    } 
} 

问题是什么?

+0

更改'public void Paint(Graphics g){'to'@Override public void Paint(Graphics g){'.. – 2014-10-09 12:29:29

+0

“而不是'paint'使用'paintComponent'方法,使用'@ Override'注解。 – alex2410 2014-10-09 12:30:18

+1

'f.setBounds(30,30,300,300);'最好让'MyCanvas'返回一个合理的首选大小和'pack()'框架。此外,不要尝试覆盖框架中的任何绘画.. – 2014-10-09 12:30:39

回答

0

显然,它是区分大小写的。
我写了public void Paint(Graphics g){..},而不是public void paint(Graphics g){..},所以我的问题已经解决了。

+1

*“显然,区分大小写。”*当然可以。但如前所述,重写'paintComponent(Graphics)',并且只能在'JComponent'中。 – 2014-10-09 12:37:12