在一个frame上实现多个canvas切换的问题,急!

问题描述

我把两个canvas添加到frame,然后向通过按钮点击来实现切换canvas,但发现的结果却是只能显示最后加进去的canvas,为了方便大家,我把我的程序贴在下面,请大虾们帮忙!packagemutiple.canvas;importjava.awt.BorderLayout;importjava.awt.Button;importjava.awt.Canvas;importjava.awt.Color;importjava.awt.Dimension;importjava.awt.Frame;importjava.awt.Graphics;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;publicclassSaveCanvasextendsFrame{ImageCanvasic=newImageCanvas();ImageCanvas2ic2=newImageCanvas2();booleanflag=false;publicSaveCanvas(){Buttonb=newButton("savecanvas");b.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEventae){if(flag){ic.setVisible(true);ic2.setVisible(false);}else{ic.setVisible(false);ic2.setVisible(true);}flag=!flag;}});setLayout(newBorderLayout());add(b,BorderLayout.NORTH);add(ic,BorderLayout.CENTER);add(ic2,BorderLayout.CENTER);setSize(newDimension(400,400));setVisible(true);ic.setVisible(false);ic2.setVisible(false);}publicstaticvoidmain(Stringargs[]){newSaveCanvas();}classImageCanvasextendsCanvas{publicvoidpaint(Graphicsg){g.setColor(Color.blue);g.fillRect(0,0,this.getWidth(),this.getHeight());g.setColor(Color.red);g.drawLine(0,0,this.getWidth(),this.getHeight());}}classImageCanvas2extendsCanvas{publicvoidpaint(Graphicsg){g.setColor(Color.blue);g.fillRect(0,0,this.getWidth(),this.getHeight());g.setColor(Color.red);g.drawLine(0,this.getHeight(),this.getWidth(),0);}}}

解决方案

解决方案二:
只支持加一个Canvas,前面的都会被最后一个覆盖。。
解决方案三:
你只要改变画的东西就可以达到你要的切换效果啦,一般不需要一个以上的Canvas来操作
解决方案四:
上面的程序只是我用于测试的例子,而我真正就是要实现两个canvas的切换,因为两个canvas都各自画着不同的东西,当要到达切换的临界点时,只需要切换一下canvas就行了,而不需要把canvasA里的东西全部delete,然后再把canvasB的东西画上去。所以我想知道awt有没有提供一个applet或frame支持多个canvas的切换?谢谢

时间: 2024-11-05 19:05:31

在一个frame上实现多个canvas切换的问题,急!的相关文章

excel表格怎么在一个图上画多条曲线?

  一般情况,我们常用的都是直接插入一条曲线的图表.但有些时候,我们在完成实验后,需要对结果进行对比分析.那么,就会需要在一个图上画多条曲线,将这多条曲线进行对比.对此,小编也很困惑,为解决这个问题,小编特地学习了操作过程.下面,小编将如何在一个图上画多条曲线的操作过程分享给大家.(小编以画2条曲线为例) 1.在电脑桌面上,新建一个excel文件(操作过程即为点击右键,在选项中选择"新建"选项,然后再选择"excel文件",即可成功新建excel文件了). 2.双击

怎样获得Sqlserver 2000得实例列表和运行在一个实例上得数据库列表

server|sqlserver|数据|数据库 在.Net FrameWork中,能够很方便调用COM组件,有些时候我们需要获得运行在某个Sql Server上得服务实例列表和在一个实例上得数据库列表,通过Microsoft.SQLDMO.Object组件就可以轻松完成此项工作:首先如何找到Microsoft.SQLDMO.Object1.如何在您得项目中能够使用SQLDMO组件?菜单-项目-添加引用-COM-Microsoft.SQLDMO.Object 2.将该功能写成一个类:   1usi

如何在一个主机上设置多个IP地址?(作者:王世俊)

ip地址 许多人认为一台机器只能有一个IP地址,实质上不是这样的.在一台主机上设置多个IP地址,这样可以为每一个部门,设置一个站点.而不用单独配置服务器了.使用多个IP地址就可以控制多个WEB站点.本文对如何在一个主机上设置多个IP地址的方法进行详细的讨论. 一般情况下,都认为一台机器只能有一个IP地址,实质是不是这样的.我们可以在一台主机上设置多个IP地址,这样可以为每一个部门,设置一个站点.而不用单独配置服务器了.我们以Windows2000 Server为例来加以说明.使用多个IP地址就可

如何将图图桌面固定在一个位置上不被拖动

将图图桌面图标管理软件固定在一个位置上的方法如下: 1.右击图图桌面面板边框,点击[更多选项].(如图) 2.在"固定在桌面上"前打勾,点确定.(如图)

windows编程 在一个窗口上加载一个位图图片

问题描述 windows编程 在一个窗口上加载一个位图图片 希望前辈们能给个demo程序.或者最基本的窗口上加载一个位图图片就好,加载位图时用的LoadImage 初学windows编程,不太懂上下文设备,希望大神能给个例程,让我学习. 解决方案 c++windows编程加载图片 解决方案二: #include #include "resource.h" LRESULT CALLBACK WndProc1(HWND hwnd,UINT message,WPARAM wParam,LPA

js 或 jquery 有没有在一个页面上调用某个页面的方法

问题描述 js 或 jquery 有没有在一个页面上调用某个页面的方法 js 或 jquery 有没有在一个页面上调用某个页面的方法 解决方案 什么叫调用页面?是调用服务器还是跳转? 前者用 $ajax,直接get /post 你的服务器地址 后者,window.location = 你的地址 解决方案二: 框架页面中js方法之间调用jquery加载页面时调用js的方法IFrame下子页面调用父框架的JS方法 解决方案三: 如果原页面不动的话,就用ajax,异步调用:如果需要跳转到目标页面的,就

asp.net-项目在一个服务器上要下载的文件在另外一个服务器上如何下载

问题描述 项目在一个服务器上要下载的文件在另外一个服务器上如何下载 项目部署在这个服务器上,而需要下载的文件存放在另外一个服务器上面,怎么想在,还有我想在下载的时候弹出一个类似迅雷下载的框,能够自定义文件存放路径和文件名称.求帮助 解决方案 你要想直接远程下载文件是不行的,只能让那个存放文件的服务器提供一个url下载地址,然后你去请求改地址下载,或者存放在远程服务器的数据库中,你通过请求远程数据库下载. c#中下载远程文件有两种方法,利用WebClient 或者WebRequest,具体可以在网

线程-在一个面板上交替显示红色的圆和绿色的圆

问题描述 在一个面板上交替显示红色的圆和绿色的圆 import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.awt.event.ActionListener; import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;i

全球在一个 level 上思考的价值观和想法是一样的(转)

近日,福布斯中文版总编辑周建工对话马云,谈到腾讯频繁的大笔收购,马云点评称腾讯收购的所有的案子,老百性都看得懂,这就错了.战略就像买股票一样,如果老太太都开始买股票了,一定有问题. 以下是对话内容,转自福布斯中文网: 福布斯:上市之后,你和阿里有没有不一样的感觉? 马云:我们的心态没有变,否则压力真大.其实如果因为上市,整个心态就变了,一点好处都没有,对年轻人尤其没有好处.就像过年吃了顿饭,然后该干什么还干什么.要看我们的定力.你看彭蕾余额宝去年面临的那些压力.15 年来,别人总是小看了我们的抗