今晩は、java初心者です、宜しくお願いします。
下のようなプログラムを書きましたが、画像がアプレットに表示されません。
画像はeclipseで同じプロジェクト(フォルダ)内に置いています。
文法上のエラーは出ておりません。
原因がわかりません宜しくお願いします。
============================
public class Test extends Applet
{
MediaTracker tracker ;
Image img ;
public void init()
{
tracker = new MediaTracker( this ) ;
img = getImage( getDocumentBase() , "a.jpg" ) ;
tracker.addImage( img , 0 ) ;
}
public void start()
{
try
{
tracker.waitForAll();
}
catch (InterruptedException e) { }
}
public void paint( )
{
Graphics g2 = getGraphics();
g2.drawImage( img , 0 , 0 , 50 , 50 , this ) ;
}
}
No.5ベストアンサー
- 回答日時:
paintを呼び出しているメソッドから見ます。
私ので言うと、
paintを呼び出す際、グラフィック情報を格納しているアドレス=1000番地を渡します。
paint(Graphics g2)によって、g2に1000番地が入ります。
g2.drawImage( img , 0 , 0 , 50 , 50 , this ) ; によって1000番地にimgが描かれます。
あなたので言うと、
paintを呼び出す際、グラフィック情報を格納しているアドレス=1000番地を渡します。(これは同じ)
paint()としてしまうと1000番地が受け取れません。
Graphics g2 = getGraphics(); は新しく取ったアドレス=1100番地に
g2.drawImage( img , 0 , 0 , 50 , 50 , this ) ; imgを書き込みます。
1000番地は変更されていません。
maiko0318さん、回答有難う御座います、お礼が遅くなりすみません。
色々と他の参考書なども読んでみましたが、やはり、よく理解できませんでした。
>paint()としてしまうと1000番地が受け取れません。
#ということは、paint( )と呼び出すときは、必ずpaint(Graphics g2)の型で使わなければならない
ということでしょうか。
/*
public void ppaint2( )
{
Graphics g2 = getGraphics();
g2.drawImage( img , 50 , 50 , 150 , 150 , this ) ;
}
*/
のように書き換えてもやはりエラ-でした。
宜しくお願いします。
No.4
- 回答日時:
paintを呼び出しているメソッドは
Graphicsの情報があるアドレスを渡してきているのです。
それで、paint(Graphics g2) で受け取れるのです。
アドレスをもらっていますから、この中で中身を変更することで
imgをpaintを呼び出しているメソッドに返すことが出来るのです。
Graphics g2 = getGraphics();
g2.drawImage( img , 0 , 0 , 50 , 50 , this ) ;
これは、新しくGraphicsタイプの領域を取り、imgを描いているだけであって
paintを呼び出しているメソッドに返ることはないのです。
maiko0318さん、回答有難うございます。
すみません、Javaの基本的内容が理解出来ていないようです、再度宜しくお願い致します。
>paintを呼び出しているメソッドは
>Graphicsの情報があるアドレスを渡してきているのです。
#しかし、Graphics g2 = getGraphics();も、Graphicsの情報があるアドレスをg2に渡している
のではないのでしょうか。
引数スタイル(? paint(Graphics g2)とGraphics g2 = getGraphics();との意味の違い
(>imgをpaintを呼び出しているメソッドに返すことが出来ない理由)が理解できません。
No.3
- 回答日時:
>#paintのg2定義を直してもプログラムとしての構成は何も変わらないと思うのですが。
こちらでテストしたところ、直りましたが。
paintのパラメータ受け取りに指定したg2にdrawImageするのです。
受け取っていないものにdrawImageしてもpaintを抜ければ消えてしまいます。
maiko0318さん、回答有り難うございました。
再度確認しましたらうまく動作しました、早トチリですみませんでした。
ところで、私の書いたコードとmaiko0318さんの書いたコードの違いが判りません。
=========================================================
public void paint( )
{
Graphics g2 = getGraphics();
g2.drawImage( img , 0 , 0 , 50 , 50 , this ) ;
}
==========================================================
# paintメソッドの中で、Graphics g2 ・・・・ローカル変数定義とGraphics()の取得、
取得した、g2にdrawImageをしていますが。
この書き方では、g2はdrawImageを受け取れないのでしょうか。
ここの意味が理解できません、宜しくお願いします。
No.1
- 回答日時:
これだけですと、状況がわからないので何とも原因が特定しにくいです。
とりあえずチェックポイントだけ。・a.jpgはどこにありますか。htmlファイルと同じ場所ですか。
・getDocumentBaseでなく、getCodeBaseでコードの配置場所に置いた場合もやはり読み込めませんか?
・Eclipseは実行する際、ビルドしたプログラムを別の場所に保存して実行しますが、ちゃんとイメージもそこに配置できていますか。
・プログラムはどういう形になっていますか。クラスファイルがそのままおかれていますか、Jarにまとめられていますか。
以上を確認してみてください。この種の問題で一番多いのは、画像ファイルが正しく配置できておらず読み込めない、というものです。次に多いのは、Jarファイルにプログラムをまとめているためにファイルが読めない(Jarにまとめるとファイルでなくリソースとして読み込まないといけない)。以上の2つが原因の大半を占めると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- Java Java プログラム public class Main { public static void 3 2023/08/10 23:46
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- Java eclipse実行ができない 2 2022/07/27 04:47
- JavaScript アップロードファイルの種類によって処理を分岐させたいのですが書き方が分からずアドバイスお願いします 4 2023/06/17 19:12
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- JavaScript jQueryで同じクラス名のものを別物として扱いたい 1 2022/06/17 14:14
- Java java final 1 2022/06/10 22:49
- HTML・CSS flex の各子要素を横幅 100% にしたい 1 2022/09/22 21:25
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列にnullを代入すると、null...
-
あんまりお料理しないのに台所...
-
Eclipse 動的プロジェクトで404...
-
list の空は [] ってあわらすのに
-
プログラミングの問題です。大...
-
変数名とDBカラム名の関係性に...
-
「main メソッドを持つクラスが...
-
次のhtml・cssでspan内の文字を...
-
Jupyter notebookですわかりま...
-
マイクラでPythonのプログラミ...
-
どんな時にIteratorを使うと便...
-
Ct.jsのJsonファイルのエラー
-
JaneStyleのスレッドが見れなく...
-
キー入力について
-
デバッグツールの具体例を教え...
-
Processingでマウスクリックで...
-
getParameterで指定したファイ...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラミングの問題です。大...
-
マイクラでPythonのプログラミ...
-
配列にnullを代入すると、null...
-
jdk17.06のインストーラーが起...
-
Eclipse 動的プロジェクトで404...
-
list の空は [] ってあわらすのに
-
下記問題の答えが"D"になる意味...
-
JaneStyleのスレッドが見れなく...
-
正規表現について質問です。 カ...
-
eclipseで作ったプログラムを他...
-
改行含むテキストの表示の仕方
-
リレーションエンティティクラ...
-
質問です。 配列が100以上の場...
-
次のhtml・cssでspan内の文字を...
-
キー入力について
-
自作Androidアプリのデータ引き...
-
問題作成のWebアプリの作り方を...
-
eclipse実行ができない
-
変数名とDBカラム名の関係性に...
-
デバッグツールの具体例を教え...
おすすめ情報