0

有谁知道如何做到这一点?imageicons 是相同的尺寸,但在一个上具有透明度,以便您可以看到背景图标。


 tiles[w][h] = new JLabel();
             if(tiles[10][15] == tiles[w][h]){
                 icon2 = new ImageIcon(Map.tileGrid[8][11]);
                 icon = new ImageIcon(Map.map[w][h]);
                 top.setIcon(icon2);
                 bottom.setIcon(icon);
                 top.setBounds(2, 0, 30, 30);
                 bottom.setBounds(0, 0, 30, 30);
                 resources.add(top, new Integer(1));
                 resources.add(bottom, new Integer(2));
                 tiles[w][h].add(resources);
             }

像这样的东西,因为我还没有实现布局管理器,所以它没有显示在我的地图上?

4

2 回答 2

2

从组合中构建一个新的 ImageIcon:

// create the new image, canvas size is the max. of both image sizes (a and b are ImageIcons)
int w = a.getIconWidth();
int h = a.getIconHeight();
BufferedImage combined = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB);

// paint both images, preserving the alpha channels
Graphics g = combined.getGraphics();
g.drawImage(a.getImage(), 0, 0, null);
g.drawImage(b.getImage(), 0, 0, null);
ImageIcon result = new ImageIcon(combined);

然后,您将result用作标签的图标

于 2012-08-03T08:14:38.060 回答
1
  1. 您可以使用基于JXLayer (Java6)的JLayer (Java7 )

  2. 你可以使用OverlayLayout

  3. 使用JLayeredPane(可能不是好方法,但是基于一堆示例)

  4. JLabel尚未实现任何LayoutManager(与JFrameor相比JPanel),您必须添加适当的LayoutManager

于 2012-08-03T07:54:23.250 回答