• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JPanelの背景に画像を並べる
#navi(../)
*JPanelの背景に画像を並べる [#be947c3e]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2004-09-13~
更新日:&lastmod;
---
category: swing
folder: BackgroundImage
title: JPanelの背景に画像を並べる
tags: [JPanel, Image]
author: aterai
pubdate: 2004-09-13T03:00:13+09:00
description: JPanelの背景に画像をタイル状に並べて表示します。
image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTH67VnIQI/AAAAAAAAAR8/JMqkIoI8n1Y/s800/BackgroundImage.png
---
* 概要 [#summary]
`JPanel`の背景に画像をタイル状に並べて表示します。

#contents
#download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTH67VnIQI/AAAAAAAAAR8/JMqkIoI8n1Y/s800/BackgroundImage.png)

**概要 [#b30d9291]
JPanelの背景に画像をタイル状に並べて表示します。

#screenshot

**サンプルコード [#t9b8baf0]
#code{{
 public void paintComponent(Graphics g) {
   Dimension d = getSize();
   int w = bgimage.getIconWidth();
   int h = bgimage.getIconHeight();
   for(int i=0;i*w<d.width;i++) {
     for(int j=0;j*h<d.height;j++) {
       g.drawImage(bgimage.getImage(), i*w, j*h, w, h, null);
     }
   }
   //setOpaque(false);
   super.paintComponent(g);
 }
* サンプルコード [#sourcecode]
#code(link){{
private final Image image;
@Override protected void paintComponent(Graphics g) {
  Dimension d = getSize();
  int w = image.getWidth(this);
  int h = image.getHeight(this);
  for (int i = 0; i * w < d.width; i++) {
    for (int j = 0; j * h < d.height; j++) {
      g.drawImage(image, i * w, j * h, w, h, this);
    }
  }
  super.paintComponent(g);
}
}}
-&jnlp;
-&jar;
-&zip;

**解説 [#s57f4112]
このサンプルでは、単純にImage(画像)を順番に並べて描画しています。コンポーネントの背景色を透明にしてから、super.paintComponent(g)する必要があります。
* 解説 [#explanation]
上記のサンプルでは、`JPanel#setOpaque(false)`でパネルの背景を透過するよう設定し、`JPanel#paintComponent(Graphics)`メソッドをオーバーライドしてこの内部で`Image`を順番に並べて描画しています。

**参考リンク [#w44c5faa]
-[[TexturePaintを使って背景に画像を表示>Swing/TexturePaint]]
* 参考リンク [#reference]
- [[TexturePaintを使って背景に画像を表示>Swing/TexturePaint]]
-- 画像から`TexturePaint`を作成して描画
- [[JTextAreaの背景に画像を表示>Swing/CentredBackgroundBorder]]
-- ひとつの画像をパネル中央に表示

**コメント [#f9db4b8d]
* コメント [#comment]
#comment
#comment