如何将2个相同大小的imagicons添加到一个jlabel中并将它们组合在一起?

时间:2012-08-03 07:49:07

标签: java swing icons jlabel imageicon

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


 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);
             }

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

2 个答案:

答案 0 :(得分: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作为标签的图标

答案 1 :(得分:1)

  1. 您可以根据JLayer (Java7)

  2. 使用JXLayer (Java6)
  3. 您可以使用OverlayLayout

  4. 使用JLayeredPane(也许不是很好的方法,但一堆例子是基于的)

  5. JLabel尚未实施任何LayoutManager(与JFrameJPanel相比),您必须添加适当的LayoutManager