这是一个简单的java交互绘图应用程序 
运行能成功 弹出窗口 但是不能在上面进行画图  
是什么问题呢??
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.geom.*;
import java.util.ArrayList;public class SmartPaint extends JFrame{
private final int OVAL=1,ROUND=2,RECT=3;
private static int WIDTH=600;
private static int HEIGHT=400;
private ArrayList list=new ArrayList();
private int topX,topY,width,height,bottomX,bottomY,shape;
private boolean filled;
private Color drawingColor;
private JRadioButton ovalBox,rectBox,roundBox;
private ButtonGroup shapeGroup;
private JCheckBox fillBox;
private JComboBox colorList;
private JButton clearButton;
private String colorNames[]={"Black","Green","Blue","Red","Cyan"};
private Color colors[]={Color.black,Color.GREEN,Color.BLUE,Color.red,Color.cyan};
private ToolWindow tools; public SmartPaint(){
super("java事件练习程序");
Container container=getContentPane();
container.setLayout(new BorderLayout());
tools=new ToolWindow();
container.add(tools,BorderLayout.NORTH);
addMouseListener(new MouseHandler());
drawingColor=Color.black;
shape=OVAL; Toolkit tk=Toolkit.getDefaultToolkit();
Dimension d=tk.getScreenSize();
int screenHeight=d.height;
int screenWidth=d.width;
setLocation((screenWidth-WIDTH)/2,(screenHeight-HEIGHT)/2);
setSize(WIDTH,HEIGHT);
setVisible(true);
}
public void paint(Graphics g){
super.paint(g);
int i=0;
if(list!=null){
while(i<list.size()){
GeObject geObject=(GeObject)list.get(i);
g.setColor(geObject.color);
if(geObject.filled)
((Graphics2D)g).fill(geObject.area);
else
((Graphics2D)g).draw(geObject.area);
i++;
}
}
}
private class ToolWindow extends JToolBar{
public ToolWindow(){
colorList=new JComboBox(colorNames);
colorList.setMaximumRowCount(3);
colorList.addItemListener(
new ItemListener(){
public void itemStateChanged(ItemEvent event){
drawingColor=colors[colorList.getSelectedIndex()];
}
});
clearButton=new JButton("清除屏幕");
clearButton.addActionListener(new ClearButtonHandler());
fillBox=new JCheckBox("填充");
FillBoxHandler fillHandle=new FillBoxHandler();
fillBox.addItemListener(fillHandle);
ovalBox=new JRadioButton("圆",true);
roundBox=new JRadioButton("圆角矩形",false);
rectBox=new JRadioButton("矩形",false); RedioButtonHandler handler=new RedioButtonHandler();
ovalBox.addItemListener(handler);
rectBox.addItemListener(handler);
roundBox.addItemListener(handler); shapeGroup=new ButtonGroup();
shapeGroup.add(ovalBox);
shapeGroup.add(rectBox);
shapeGroup.add(roundBox); add(clearButton);
add(fillBox);
add(ovalBox);
add(rectBox);
add(roundBox);
add(colorList);
}
} private class MouseHandler extends MouseAdapter{
public void mousePressed(MouseEvent event){
topX=event.getX();
topY=event.getY();
}
public void mouseReleased(MouseEvent event){
bottomX=event.getX();
bottomY=event.getY();
width=Math.abs(topX-bottomX);
height=Math.abs(topY-bottomY);
GeObject geObject;
Area area=null;
if(shape==OVAL)
area=new Area(new Ellipse2D.Double(topX,topY,width,height));
else if(shape==ROUND)
area=new Area(new RoundRectangle2D.Double(topX,topY,width,height,20,20));
else if(shape==RECT)
area=new Area(new Rectangle2D.Double(topX,topY,width,height));
geObject=new GeObject(area,filled,drawingColor);
list.add(geObject);
repaint();
}
} private class ClearButtonHandler implements ActionListener{
public void actionPerformed(ActionEvent event){
list.clear();
repaint();
}
} private class RedioButtonHandler implements ItemListener{
public void itemStateChanged(ItemEvent event){
if(event.getSource()==ovalBox)
shape=OVAL;
else if(event.getSource()==roundBox)
shape=ROUND;
else if(event.getSource()==rectBox)
shape=RECT;
}
} private class FillBoxHandler implements ItemListener{
public void itemStateChanged(ItemEvent event){
if(event.getStateChange()==ItemEvent.SELECTED)
filled=true;
else
filled=false;
}
} private class GeObject{
Area area;
boolean filled;
Color color;
public GeObject(Area area,boolean filled,Color color){
this.area=area;
this.filled=filled;
this.color=color;
}
} public static void main(String args[]){
JFrame.setDefaultLookAndFeelDecorated(true);
SmartPaint application=new SmartPaint();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}