2

2 つの異なるフレームに 2 つの異なる画像を表示したい。問題は、このコードがこの 2 つの画像 (円) を表示せず、最後の画像のみを表示することです。どんな助けでも大歓迎です!ありがとうございました。

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();

}
}
4

1 に答える 1

3

あなたは電話setVisibleをかけませんframe2

また、paint静的であるように:

静的 int ペイント = 0;

塗装された 1 つの色しか表示されません。

解決策は、これを のメンバー変数にするMyCanvasことです。次のようになります。

public void setColorFlag(int color)

または、円の色 (!) を渡すことをお勧めします。

于 2012-08-26T17:19:13.857 に答える