/*
Purpose:Draw a line a JFrame
*/
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
import javax.swing.*;public class DrawLine extends JComponent{

//Constructor
public DrawLine(){
setDoubleBuffered(true);
}
//Rewrite the paintComponent method
public void painComponent(Graphics g){
//Conver the Graphics to the Graphics2D object
Graphics2D g2= (Graphics2D)g;

//Set the background
Dimension size= getSize();
g2.setColor(Color.WHITE);
g2.fill(new Rectangle2D.Double(0,0,size.width,size.height));

//Draw a line
BasicStroke bs=new BasicStroke(4.0f);
g2.setColor(Color.BLACK);
g2.setStroke(bs);
Line2D line= new Line2D.Double(10.,10.,360.,360.);
g2.draw(line);
}

public static void main(String[] args){
//Create a winows listener to handle "close" events
MyWindowListener l= new MyWindowListener();

//Create a DrawLine object
DrawLine c= new DrawLine();

//Create a Frame and put the DrawLine object into the frame
JFrame f= new JFrame("Test a new line.....");
f.addWindowListener(l);
f.getContentPane().add(c,BorderLayout.CENTER);
f.pack();
f.setSize(400,400);
f.show();
}
}class MyWindowListener extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.exit(0);
}
}

解决方案 »

  1.   

    干嘛都喜欢重载 paintComponent 而不喜欢重载 paint(Graphics) 呢
    你重载 paint(Graphics) 试试
      

  2.   

    汗.....知道错哪了,居然paintComponent少了一个t...
    还是谢谢楼上的了!
      

  3.   

    哈哈,是哦,没注意到。如果你是用的 Java5.0 的话,可以在重载函数前面加一个 @Override,这样编译器会帮你检查是否重载的,可以避免一些拼写错误。另外,我觉得一般还是重载 paint 比较好一些。