2012-08-26 27 views
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(); 

} 
} 

回答

3

你從來沒有frame2調用setVisible

同樣如paint是靜態的:

靜態INT塗料= 0;

你只會看到一種顏色畫。

解決的辦法是使之成爲一個成員變量這MyCanvas,是這樣的:(!)

public void setColorFlag(int color) 

或者更好的是傳遞圓圈的顏色。

+0

您的回答非常有幫助!非常感謝你! –

相關問題