importjava.awt.*;
importjava.awt.Dimension;
importjava.awt.event.*;
publicclassYJY2
{
Framef1=newFrame(\"简单绘图\");
Panelp1=newPanel();
Buttonbt1=newButton(\"绘制矩形\");
Buttonbt2=newButton(\"绘制圆形\");
Buttonbt3=newButton(\"清空\");
MycanvasdrawArea1=newMycanvas();
MycanvasdrawArea2=newMycanvas();
publicYJY2()
{
p1.add(bt1);
p1.add(bt2);
p1.add(bt3);
bt3.addActionListener(newActionListener()
{
publicvoidactionPerformed(ActionEvente)
{
Graphicsgg=drawArea1.getGraphics();
drawArea1.update(gg);
System.out.println(\"我想就是这样的\");
}
});
f1.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{
System.exit(0);
}
});
f1.add(p1,BorderLayout.SOUTH);
drawArea1.setPreferredSize(newDimension(250,180));
drawArea2.setPreferredSize(newDimension(300,180));
f1.add(drawArea1,BorderLayout.EAST);
f1.add(drawArea2,BorderLayout.WEST);
f1.pack();
f1.setVisible(true);
}
publicstaticvoidmain(Stringargs[])
{
newYJY2();
}
classMycanvasextendsCanvas
{
publicvoidpaint(Graphicsg)
{
g.drawRect(80,60,150,92);
g.drawOval(90,70,100,60);
}
publicvoidupdate(Graphicsg)
{
g.setColor(Color.white);
g.fillRect(0,0,getWidth(),getHeight());
}
}
}
方法是创建一个Graphics的上下文引用gg给drawArea1,然后我写了楼主的update()就是用白色的矩形覆盖原内容,然后在action使用中调用update()传参是gg即drawArea1...主要是这句Graphicsgg=drawArea1.getGraphics();程序在netBeans中可以运行但在dos下编译时提示写入匿名类时出错,楼主在重构一下程序应该就ok了
|