我把两个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);
}
}
}
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);
}
}
}
一般不需要一个以上的Canvas来操作