ページ 11

javaのImageを二次元配列

Posted: 2013年1月28日(月) 17:20
by daj
javaです。私は画像を表示する時

コード:

import java.awt.*;
import javax.swing.*;

class Jpeg extends JFrame
{   static  Image   img;
    public Jpeg()
    {   super("Win JPEG");
        img = getToolkit().getImage("test.jpg");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(320, 230);
        setVisible(true);
    }
    public static void main(String args[])
    {   new Jpeg();
    }
    public void paint(Graphics g)
    {   super.paint(g);
        if (img!=null)
           g.drawImage(img,16,40,this);
    }
}
のようにやっているのですが、Image imgをImage[] img[10]等のように二次元配列に出来ないでしょうか?
このままだと複数枚の画像を表示する時、
g.drawImage(img,16,40,this);
g.drawImage(img1,16,60,this);
のようにしなければいけないのが手間に思えるので…

Re: javaのImageを二次元配列

Posted: 2013年1月28日(月) 17:49
by ISLe
daj さんが書きました:Image imgをImage[] img[10]等のように二次元配列に出来ないでしょうか?
基本的な構文だと思いますが、こんな感じでいかがでしょう。

コード:

import java.awt.*;
import javax.swing.*;

public class Jpeg extends JFrame
{
	/* static */ Image[] img = new Image[10]; // なぜstatic?
	public Jpeg()
	{
		super("Win JPEG");
		img[0] = getToolkit().getImage("test0.jpg");
		img[1] = getToolkit().getImage("test1.jpg");
		img[2] = getToolkit().getImage("test2.jpg");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setSize(320, 230);
		setVisible(true);
	}
	public static void main(String[] args)
	{
		new Jpeg();
	}
	public void paint(Graphics g)
	{
		super.paint(g);
		int ofs = 0;
		for (Image img : this.img) {
			if (img!=null) {
				g.drawImage(img,16+ofs,40+ofs,this);
				ofs += 10;
			}
		}
    }
}

Re: javaのImageを二次元配列

Posted: 2013年1月28日(月) 19:08
by daj
返信ありがとうございます
これを参考に頑張りますm(_ _)m