2017-05-09 125 views
1

我正在創建一個swing應用程序(rip我知道),並且希望將2個JLabels放在eachother的頂部。繼承人場景添加覆蓋JLabels

遊戲是一個島嶼的鳥瞰圖,島嶼被分隔成網格正方形......現在在這些網格正方形中的每一個上,可以有許多1個物品和1個動物。香港專業教育學院創建兩個JLabel

JLabel animal = new JLabel(); 
JLabel item = new JLabel(); 

,然後用animal.setIcon(...);設置自己的形象。現在,這是完美的工作,但我想放置在動物標籤上的圖像,以便我可以在同一個網格廣場上看到兩個圖像。

我在帶班寫下面的代碼擴展JPanel,這是我後來添加到一個JFrame(這是gridsquare類)

if(inputItem!= null){ 
      try{ 
       imgItem = ImageIO.read(inputItem); 
       itemLabel.setIcon(new ImageIcon(imgItem.getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_SMOOTH))); 
       this.add(itemLabel); 
      }catch(Exception e){ 
       //do something 
      } 
     } 

所以這個工作得很好。我還爲inputAnimal和imgAnimal變量做了非常類似的事情。只是想知道我可以如何將它們添加到彼此的頂部。我試圖簡單地添加它們,但這不起作用。

在此先感謝

+1

你不需要兩個標籤。你需要一個[OverlayIcon](http://stackoverflow.com/questions/17088599/how-to-combine-two-icons-in-java) –

回答

2

現在在每個方格的,可以有很多項目1項和1只動物。我創建了兩個JLabels

您可以使用OverlayLayout。它允許您在同一個面板上堆疊Z軸組件。

或者你也可以採取部件之間的搖擺父/子關係的優勢和標籤,只要父標籤使用佈局管理器添加到另一個標籤:

animal.setLayout(new BorderLayout()); 
animal.add(item); 
gridSquare.add(animal); 
+0

工作很好,謝謝 –