Java 出现在同一帧上
我想在两个不同的帧中显示两个不同的图像。问题是,这段代码不显示这两个图像(圆圈),只显示最后一个。任何帮助都将不胜感激!多谢各位Java 出现在同一帧上,java,swing,jframe,jpanel,Java,Swing,Jframe,Jpanel,我想在两个不同的帧中显示两个不同的图像。问题是,这段代码不显示这两个图像(圆圈),只显示最后一个。任何帮助都将不胜感激!多谢各位 public class MyCanvas extends JPanel { private static final long serialVersionUID = 1L; static int paint=0; public MyCanvas(){ } public void paintComponent(Graphics gr
public class MyCanvas extends JPanel {
private static final long serialVersionUID = 1L;
static int paint=0;
public MyCanvas(){
}
public void paintComponent(Graphics graphics){
System.out.println("mpika!!!");
// super.paintComponent(graphics);
if(paint==0){
graphics.setColor(Color.blue);
graphics.drawOval(250,250,250,250);
}
else{
graphics.setColor(Color.red);
graphics.drawOval(150,150,150,150);
}
}
public static void other(){
JFrame frame2 = new JFrame();
MyCanvas canvas2 = new MyCanvas();
frame2.setSize(700, 700);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.add(canvas2);
frame2.setVisible(true);
Graphics graph2 = canvas2.getGraphics();
canvas2.paintComponent(graph2);
}
public static void main(String[] args){
double t;
JFrame frame = new JFrame();
MyCanvas canvas = new MyCanvas();
frame.setSize(700, 700);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(canvas);
frame.setVisible(true);
Scanner input = new Scanner(System.in);
Graphics graph = canvas.getGraphics();
canvas.paintComponent(graph);
// t = input.nextInt();
paint=1;
other();
}
}
您从未在
frame2
上调用setVisible
由于油漆是静态的:
静态int-paint=0
你只能看到一种颜色的画
解决方案是将其转换为MyCanvas
中的成员变量,类似于:
public void setColorFlag(int color)
或者最好还是在圆圈中传递颜色(!)。您的答案非常有用!非常感谢你!