pngファイルから作成されたBufferedImageがあります。それを作成するときに、タイプをTYPE_INT_ARGBに設定しました。これは私に透明なイメージを与えるはずです。 JPanelの内部でpaintComponentを使用して画像をペイントすると、黒い背景の画像が表示されます。私は本当にそれを透明にする必要があるので、どんな助けも役に立つでしょう。ここではわかりやすくするためのコードは次のとおりです。ここで透明なBufferedImageは、JLabelでペイントしている間に黒い背景で表示されます。
public class ImagePanel extends JPanel {
private static final long serialVersionUID = 1L;
private BufferedImage image;
public ImagePanel() {
this.image = null;
}
public void createImage(String fileName) {
this.image = ImageUtilities.getBufferedImage(fileName, this);
this.repaint();
}
public void paint(Graphics g) {
g.drawImage(this.image, 0, 0, this);
}
}
は、私がイメージをロードする方法である:追加する
public class ImageUtilities {
/** Create Image from a file, then turn that into a BufferedImage.
*/
public static BufferedImage getBufferedImage(String imageFile, Component c) {
Image image = c.getToolkit().getImage(imageFile);
waitForImage(image, c);
BufferedImage bufferedImage = new BufferedImage(image.getWidth(c), image.getHeight(c),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2d = bufferedImage.createGraphics();
g2d.drawImage(image, 0, 0, c);
return(bufferedImage);
}
そして最後に一つは、それがどんな意味を持っている場合、このImagePanelは、別のパネルの内側にあるということです。
新しいIO APIがトリックでしたが、古いメソッド(私が使用しているメソッドが古いとみなされていると仮定した場合)の解決策を見ていただければ幸いです。 – gmunk