2016-08-09 4 views
0

私はremoveSeats()を呼び出してからdisplaySeats()を呼び出すたびに、すべての座席コンポーネントが消えているように見えるが、座って空になっていて、2分ごとに順番が変わる椅子のグループを表示するこれらの関数を持っている。それぞれの椅子にある情報を表示する別の機能があるため、それらが自分のものであることを知ってください。repaint()およびrevalidate()を使用するにはどうすればよいですか?

private void removeSeats(){ 

    for(int i = 0; i < c.getClassroom().size(); i++) 
     pnlGame.remove(c.getClassroom().get(i).getSprite()); 

    for(int i = 0; i < emptySeats.size(); i++) 
     pnlGame.remove(emptySeats.get(i).getSprite()); 

    pnlGame.repaint(); 
} 

private void displaySeats(){ 
    // GAME SCREEN (pnlGame) Components 

    emptySeats = new ArrayList<Sprite>(); 
    Sprite temp; 
    int x = 25, y = 70, xS = 0, yS = 0, eI = 0, cI = 0; 

    for(int i = 0; i < 64; i++){ 
     if(i % 8 == 0 && i != 0){ 
      x = 25; 

      y += 80; 
     } 

     temp = new Sprite(); 
     temp.setName("Empty Seat"); 
     temp.getSprite().setBorder(BorderFactory.createLineBorder(Color.black)); 
     temp.setSprite(new JLabel(new ImageIcon("src\\seat.png"))); 
     temp.setOrigin(x, y); 
     temp.setDimensions(40, 60); 

     if(c.search(xS, yS) != null){ 
      if(c.getClassroom().get(cI).isPresent()){ 
       c.getClassroom().get(cI).getSprite().setBorder(BorderFactory.createLineBorder(Color.white)); 
       c.getClassroom().get(cI).setOrigin(x, y); 
       c.getClassroom().get(cI).setDimensions(40, 60); 
       pnlGame.add(c.getClassroom().get(cI).getSprite()); 

      }else{ 
       emptySeats.add(temp); 
       pnlGame.add(emptySeats.get(eI).getSprite()); 
       eI++; 
      } 

      cI++; 
     }else{ 
      emptySeats.add(temp); 
      pnlGame.paintComponents(temp.getSprite().getGraphics()); 
      pnlGame.add(emptySeats.get(eI).getSprite()); 
      eI++; 
     } 

     xS++; 
     if(xS >= 8){ 
      xS = 0; 
      yS++; 
     } 

     x += 80; 
    } 

    pnlGame.revalidate(); 

} 

答えて

0

この行をremoveSeatsメソッドに追加する必要があると思います。

pnlGame.revalidate(); 
pnlGame.repaint(); 
関連する問題