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

heloyouarefine 2010-04-26 11:01:40
我把两个canvas添加到frame,然后向通过按钮点击来实现切换canvas,但发现的结果却是只能显示最后加进去的canvas,为了方便大家,我把我的程序贴在下面,请大虾们帮忙!

package mutiple.canvas;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class SaveCanvas extends Frame {
ImageCanvas ic = new ImageCanvas();
ImageCanvas2 ic2 = new ImageCanvas2();

boolean flag = false;

public SaveCanvas() {
Button b = new Button("save canvas");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if(flag){
ic.setVisible(true);
ic2.setVisible(false);
}else{
ic.setVisible(false);
ic2.setVisible(true);
}
flag = !flag;
}
});
setLayout(new BorderLayout());
add(b, BorderLayout.NORTH);

add(ic, BorderLayout.CENTER);
add(ic2, BorderLayout.CENTER);
setSize(new Dimension(400, 400));
setVisible(true);
ic.setVisible(false);
ic2.setVisible(false);
}

public static void main(String args[]) {
new SaveCanvas();
}

class ImageCanvas extends Canvas {
public void paint(Graphics g) {
g.setColor(Color.blue);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.red);
g.drawLine(0, 0, this.getWidth(), this.getHeight());
}
}

class ImageCanvas2 extends Canvas {
public void paint(Graphics g) {
g.setColor(Color.blue);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
g.setColor(Color.red);
g.drawLine(0, this.getHeight(), this.getWidth(), 0);
}
}
}
...全文
281 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
heloyouarefine 2010-04-27
  • 打赏
  • 举报
回复
上面的程序只是我用于测试的例子,而我真正就是要实现两个canvas的切换,因为两个canvas都各自画着不同的东西,当要到达切换的临界点时,只需要切换一下canvas就行了,而不需要把canvas A里的东西全部delete,然后再把canvas B的东西画上去。所以我想知道awt有没有提供一个applet或frame支持多个canvas的切换 ? 谢谢
梦_枫 2010-04-26
  • 打赏
  • 举报
回复
你只要改变画的东西就可以达到你要的切换效果啦,
一般不需要一个以上的Canvas来操作
梦_枫 2010-04-26
  • 打赏
  • 举报
回复
只支持加一个Canvas,前面的都会被最后一个覆盖。。

62,624

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧