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. JLabelLayoutManager(またはと比較してJFrame)何も実装していないJPanel場合は、適切に追加する必要がありますLayoutManager

于 2012-08-03T07:54:23.250 に答える