JAVA 里的Canvas类怎么用? 我画了个矩形,但是不知道怎么把它删除,求高手,最好能个我个例子。

[复制链接]
查看11 | 回复4 | 2011-5-17 12:11:57 | 显示全部楼层 |阅读模式
删除的意思是让画板变为和原来一般没有画东西
importjava.awt.Dimension;
importjava.awt.event.*;
publicclassYJY2
{
        Framef1=newFrame(\"简单绘图\");
        Panelp1=newPanel();
        Buttonbt1=newButton(\"绘制矩形\");
        Buttonbt2=newButton(\"绘制圆形\");
        Buttonbt3=newButton(\"清空\");
        MycanvasdrawArea1=newMycanvas();
        MycanvasdrawArea2=newMycanvas();
        publicvoidset()
        {
                p1.add(bt1);
                p1.add(bt2);
                p1.add(bt3);
                bt3.addActionListener(newActionListener()
                {
                        publicvoidactionPerformed(ActionEvente)
                        {
                                drawArea1.repaint();
                                System.out.println(\"我靠!\");
                        //        drawArea1.update(g);
                        }
                });
                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[])
        {
                newYJY().set();
        }
        classMycanvasextendsCanvas
        {
                publicvoidpaint(Graphicsg)
                {
                        g.drawRect(80,60,150,92);
                        g.drawOval(90,70,100,60);
                }
                publicvoidupdate(Graphicsg)
                {
                       
                }
        }
}


我想按“清空”的时候把画板的东西清除掉
回复

使用道具 举报

千问 | 2011-5-17 12:11:57 | 显示全部楼层
重画Canvas用Graphrics的getColor()方法获得Color.white然后调用drawRect(x,y,getWidth(),getHight())方法重画canvas就ok了,不行再repaint()一下就ok了x,y值是你的canvas的起点坐标









<h4class=\"ask\">追问


我也是这样想的,但是不知道怎么实现,能不能把代码给我?谢谢了。
回复

使用道具 举报

千问 | 2011-5-17 12:11:57 | 显示全部楼层
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了
回复

使用道具 举报

千问 | 2011-5-17 12:11:57 | 显示全部楼层
要是把update()函数写在Canvas子类里的时候画不出东西啊,不过还是很感谢你。
回复

使用道具 举报

千问 | 2011-5-17 12:11:57 | 显示全部楼层
谢谢,可能是我没说清楚。我想的是把它清除掉,就是画板还在,但是没有图形,不是设置为不可见,能不能再帮帮忙,拜托了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行