<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>画像を表示する</title><revhistory><revision><revnumber>23</revnumber><date>2010-12-18 06:53:05</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>22</revnumber><date>2010-12-13 06:32:04</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>21</revnumber><date>2009-12-09 00:43:25</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>20</revnumber><date>2009-12-04 02:26:43</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>19</revnumber><date>2009-12-04 02:26:24</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>18</revnumber><date>2009-12-04 02:25:49</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>17</revnumber><date>2009-12-03 04:50:25</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>16</revnumber><date>2009-12-03 04:49:14</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>15</revnumber><date>2009-12-03 04:44:27</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>14</revnumber><date>2009-12-03 04:43:30</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>13</revnumber><date>2009-12-03 04:42:33</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>12</revnumber><date>2009-12-03 04:34:11</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>11</revnumber><date>2009-12-03 04:28:04</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>10</revnumber><date>2009-12-03 04:27:47</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>9</revnumber><date>2009-12-03 04:20:21</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>8</revnumber><date>2009-12-03 04:19:26</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>7</revnumber><date>2009-12-03 02:03:52</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>6</revnumber><date>2009-12-03 02:03:39</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2009-12-03 01:55:28</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2009-12-03 01:51:23</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2009-12-03 01:49:54</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2009-12-03 01:47:45</date><authorinitials>masahiko</authorinitials><revremark>名前を'イメージの表示'から変更。</revremark></revision><revision><revnumber>1</revnumber><date>2009-12-03 00:41:48</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>画像を表示する</title><para>画像を表示するには２つの処理が必要です。 </para><itemizedlist><listitem><para>画像を読み込む </para></listitem><listitem><para>画像を表示する </para></listitem></itemizedlist><para>読み込んだ画像を覚えておくにはImageクラスの変数(オブジェクト)を使います。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E7%94%BB%E5%83%8F%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=image1.png"/></imageobject><textobject><phrase>image1.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>画像を読み込む</title><para>最初に一度だけ行えばよい。 </para><itemizedlist><listitem override="none"><para>コンストラクタ内に記述すれば、インスタンスが作られるときに１度だけ実行される。 </para></listitem></itemizedlist><para>画像ファイルから読み込むには ImageIconクラスを使います。 </para><itemizedlist><listitem override="none"><para>javax.swingパッケージにあります。 </para></listitem><listitem override="none"><para>コンストラクタ ImageIcon( ファイル名 ) を使うとファイルから読みこんでインスタンスが作られます。 </para></listitem></itemizedlist><para>ImageIconインスタンスからImageを得るにはgetImageメソッドを使います。 </para><itemizedlist><listitem override="none"><programlisting format="linespecific" language="java" linenumbering="numbered" startinglinenumber="1"><![CDATA[ ]]><token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[class]]></token><![CDATA[ ]]><methodname><![CDATA[Sample5]]></methodname><![CDATA[ ]]><token><![CDATA[extends]]></token><![CDATA[ ]]><methodname><![CDATA[JPanel]]></methodname>
<![CDATA[ {]]>
<![CDATA[        ]]><methodname><![CDATA[Image]]></methodname><![CDATA[ ]]><methodname><![CDATA[img]]></methodname><![CDATA[;]]>
<![CDATA[        ]]>
<![CDATA[        ]]><methodname><![CDATA[Sample5]]></methodname><![CDATA[()]]>
<![CDATA[        {]]>
<![CDATA[                ]]><methodname><![CDATA[ImageIcon]]></methodname><![CDATA[ ]]><methodname><![CDATA[ii]]></methodname><![CDATA[;]]>
<![CDATA[                ]]><methodname><![CDATA[ii]]></methodname><![CDATA[ = ]]><token><![CDATA[new]]></token><![CDATA[ ]]><methodname><![CDATA[ImageIcon]]></methodname><![CDATA[( ]]><phrase><![CDATA["sample.jpg"]]></phrase><![CDATA[ );]]>
<![CDATA[                ]]><methodname><![CDATA[img]]></methodname><![CDATA[ = ]]><methodname><![CDATA[ii]]></methodname><![CDATA[.]]><methodname><![CDATA[getImage]]></methodname><![CDATA[();]]>
<![CDATA[        }]]>
<![CDATA[ }]]>
</programlisting></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--></section><section><title>画像を表示する</title><itemizedlist><listitem override="none"><para>表示はpaintComponentメソッド内に記述します。 </para></listitem></itemizedlist><para>drawImageメソッドを使います。 </para><itemizedlist><listitem override="none"><para>java.awtパッケージ内 </para></listitem><listitem override="none"><para>graphicsクラス </para></listitem></itemizedlist><para>のメソッドです。 </para><para>APIを調べてみましょう。同じ名前のメソッドが６種類あります。</para><para> 最も簡単な使い方を示します。 </para><itemizedlist><listitem override="none"><screen><![CDATA[ g.drawImage(img, 0,0, this);]]></screen></listitem><listitem override="none"><para>１番目の引数で表示するイメージを指定します。 </para></listitem><listitem override="none"><para>２番目と３番目の引数で、どの位置に表示するかを指定します。 </para></listitem><listitem override="none"><para>４番目の引数には情報を受け取るオブジェクトを指定します。通常はthisを指定すればよい。 </para></listitem></itemizedlist><para>画像を読み込む処理は別のスレッドで行われるため、 場合によっては処理が完了したかなどの情報が必要なことがあります。 ネットワークを介してファイルを読み込むなど手間のかかる処理を考えてみてください。 読み込みだけでなく、別のスレッドでイメージを修正しようとしているかもしれません。 このために、ImageObserverの機能をもつオブジェクトを最後の引数として指定します。 </para><!--rule (<hr>) is not applicable to DocBook--></section><section><title>演習</title><para>例とは別のdrawImageメソッドを使って、画像の一部をウインドウ内の一部に表示しなさい。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E7%94%BB%E5%83%8F%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B?action=AttachFile&amp;do=get&amp;target=image2.png"/></imageobject><textobject><phrase>image2.png</phrase></textobject></inlinemediaobject> </para></listitem></itemizedlist><para>ヒント </para><itemizedlist><listitem override="none"><para>上の例はAPIリファレンスの２番目のdrawImageであるが、６番目のdrawImageを使う。 </para></listitem></itemizedlist></section></section></article>