java - 出现在同一帧上

标签 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 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

此外,由于 paint 是静态的:

静态int油漆= 0;

您只会看到一种颜色。

解决方案是将其设为MyCanvas中的成员变量,如下所示:

public void setColorFlag(int color)

或者更好的是仍然传递圆圈颜色(!)。

关于java - 出现在同一帧上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12132157/

相关文章:

java - 将图像添加到 JFrame

java - 具有基本身份验证结果的 HTTPS 连接未授权

java - 在 JToggleButton 中保存选择

java - 如何在我的数字时钟图形用户界面上闪烁冒号?

java - JCheckBox不触发isselect

java - pdfbox,提取文本时cpu 100%

java - 使用button.setPressed(false)的问题;在android java代码中

java - JSpinner 值未更新

java - 使用java swing实现滑动抽屉动画

java repaint() 的不稳定行为(JPanel、JFrame)