2016-08-09 166 views
0

Ich habe diese Funktionen, die eine Gruppe von Stühlen zeigen, sitzend und leer, die sich alle zwei Minuten ändert, aber jedes Mal, wenn ich removeSeats() und DisplaySeats() anrufe, scheinen alle Sitzkomponenten zu verschwinden, aber ich Ich weiß, dass sie ihre sind, weil ich eine andere Funktion habe, die die Information anzeigt, die jeder Stuhl hat.Wie benutze ich repaint() und 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(); 

} 

Antwort

0

Ich denke, dass Sie diese Zeile in Ihrer removeSeats Methode hinzufügen müssen.

pnlGame.revalidate(); 
pnlGame.repaint();