2016-06-07 5 views
-1

Я создаю игру в блэкджек в java для школы, и я не могу понять, как добавить первые четыре карты в GPanel. Массив карт перетасовывается, а строки в массиве соответствуют имени файла изображений. Я могу получить первую карту в массиве для загрузки, но не остальные три. Любая помощь была бы потрясающей.Добавление нескольких изображений в GPanel с помощью Java

public void paintComponent(Graphics g) { 
     //System.out.println(gameInProgress); 

     if(gameInProgress == true) { 
      super.paintComponent(g); 

      Graphics2D g2 = (Graphics2D) g; 
      Image image = null; 
      int i; 
      currentPosition = 0; 
      for (i = 0; i < 4; i++) { 
       image = Toolkit.getDefaultToolkit().getImage("images/"+deck[currentPosition - i]+".png"); 
       currentPosition++; 
      } 
      g2.drawImage(image, 115, 5, 80, (int) 106.67, this); 
      g2.finalize(); 
     } 
    } 
+1

ваша первая очередь проблема заключается в том, что вы называете что-то GPanel – gpasch

ответ

0

У вас есть 3 основных проблемы в вашем коде.

Первая проблема вызвана [currentPosition - i], потому что результат всегда будет равен 0, поэтому изображение/карта в индексе массива 0 будет единственным, который когда-либо будет нарисован.

Вторая проблема заключается в том, что вы рисуете только одно изображение, потому что g2.drawImage вызывается только после цикла for, вместо этого он должен находиться внутри цикла for так, чтобы рисовались все 4 изображения/карты.

Третья проблема заключается в том, что вы всегда рисуете свои изображения в одном и том же месте, поэтому даже если вы рисуете все 4 изображения, вы увидите только последний, потому что он охватывает предыдущие.

Попробуйте это, он должен печатать все 4 изображения (Предполагается, что у вас есть 435x112 панель):

public void paintComponent(Graphics g) { 
    //System.out.println(gameInProgress); 

    if(gameInProgress == true) { 
     super.paintComponent(g); 

     //Add a couple new variables 
     int x = 115; 

     Graphics2D g2 = (Graphics2D) g; 
     Image image = null; 
     int i; 
     for (i = 0; i < 4; i++) { 
      image = Toolkit.getDefaultToolkit().getImage("images/"+deck[i]+".png"); 
      //New location of g2.drawImage 
      //The X positions should change each time 
      g2.drawImage(image, x, 5, 80, 107, this); 
      //Change the X location of the next image 
      x = x + 80; 
     } 
     //Moved g2.drawImage from here to above the bracket 
     g2.finalize(); 
    } 
}