2016-02-10 29 views
0

我試圖做一個程序,其中綠色方塊繪製在JFrame中,但是當我嘗試它時,方塊不可見。我不知道他們是不是因爲某種原因被抽中或者只是不可見。FillRect()不工作

public void paintComponent(Graphics g) 
{ 
    super.paintComponent(g); 
    //make sure nothing happens when at main menu 
    if(level >= 1) 
    { 
     //determine square size 
     size[0] = playScreen.getWidth()/squares; 
     size[1] = playScreen.getHeight()/squares; 
     System.out.println("The width of a single square is " + size[0]); 
     System.out.println("The height of a single square is " + size[1]); 
     //draw the cubes 
     g.setColor(Color.GREEN); 
     if(currentView == 0) 
     { 
      //front view 
      for(int i = 0; i < xPosTargets.size(); i++) 
      { 
       g.fillRect(xPosTargets.get(i)*size[0], zPosTargets.get(i)*size[1], size[0], size[1]); 
      } 
     } 
     else if(currentView == 1) 
     { 
      //side view 
      for(int i = 0; i < xPosTargets.size(); i++) 
      { 
       g.fillRect((yPosTargets.get(i))*size[0], (zPosTargets.get(i))*size[1], size[0], size[1]); 
      } 
     } 
     else 
     { 
      //top view 
      for(int i = 0; i < xPosTargets.size(); i++) 
      { 
       g.fillRect((xPosTargets.get(i))*size[0], (squares - zPosTargets.get(i))*size[1], size[0], size[1]); 
      } 
     } 
    } 
} 

我還以爲有不正確的值的變量,但是當我試圖把它們打印所有System.out.println(),他們是他們應該是什麼。變量類型如下: xPosTargetsyPosTargetszPosTargetsArrayList<Integer>小號 sizeint[] playScreenJPanel squaresint,是的,它實際上有一個值時,它應該被畫首次

回答

-1

也許試試paint(Graphics g)而不是paintComponent(Graphics g)

+0

當我覺得事情似乎比我想象的更容易時,我討厭它......謝謝! – Koen

+0

沒問題。如果您想更深入地瞭解Java中的繪畫,請查看此鏈接。 https://docs.oracle.com/javase/tutorial/uiswing/painting/closer.html – Chara

+0

我已經在框架中添加了一些JButton,但是在繪製運行後它們不可見,直到我用鼠標移過它們。你知道如何解決這個問題嗎?還是我不得不問一個新的問題呢? – Koen