- PR -

frame.setBounds()について

投稿者投稿内容
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-11-26 13:21
引用:

rancoさんの書き込み (2007-11-26 12:13) より:
はいはい。アドバイスありがとうごさいます。
でも、
> ("../img/421434439.jpg")
これを書いたのは本人と本人の環境ですから、遠方の私には点検できませんね。
だから、自分の環境ぐらい自分で点検しろって言ったんです。



えぇ。点検しないといけないことはranco氏の言うとおりですとも。
さらに「何を」点検するのか、「何故」点検しないといけないのか
的確に指摘するとやり取りが少なく済むのではないでしょうか。

「点検」のひとことで済むなら、ここのBBSに投稿される問題は全て
「点検しろ」「デバッグしろ」で片付くことになりますね
でも実際にはそうではないでしょう?
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-26 13:52
そうか、「環境」という言葉が難しいかもしれませんね。
私としては、プログラムのコードか、それともそれを動かす環境か、という二分法を言っているつもりでした。
今回の問題でも、不具合の原因となっている環境の要素は意外と複数あるかもしれない。だからあえて、ファイルパスだけとは特定しなかったのです(いちばん疑わしいことは疑わしいが)。おれんじーさんが、A要素を調べてAはOKだったら、次はB要素を調べてみるとか、ご自分でやってみるのがいちばんです。

おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-26 15:38
nagiseさん、どうもありがとうございます。
今まだ解決に至っていません。
ちなみに、exceptionはでていません。
また、ディレクトリパスはsrcフォルダと同じ階層にimgフォルダがあるのであっています。もう少し自分で頑張ってみます。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-11-26 17:16
引用:

おれんじーさんの書き込み (2007-11-26 15:38) より:
また、ディレクトリパスはsrcフォルダと同じ階層にimgフォルダがあるのであっています。もう少し自分で頑張ってみます。



Appletの場合、ローカル実行とはパスの扱いで違いが出るので注意してください。
ローカルでのJavaアプリケーションは実行されたパスからの相対パスで
ローカルのリソースを取得することができますが、
Appletの場合はリソースがおかれているのは通信先のサーバということになります。

Appletのタグについては公式のドキュメントを参考にしてください。
http://sdc.sun.co.jp/java/docs/j2se/1.4/ja/docs/ja/guide/misc/applet.html

AppletのリソースはAppletタグのCODEBASE属性からの相対になったと思います。

個人的にはAppletはjarファイル化したほうがよいように思います。
その際、jarファイルに画像などのリソースも含めることになりますが、
このリソースは先に述べたようにClassLoaderから取得することができます。
クラスパス上からのリソース取得に一本化するほうがトラブルが少ないと思います。

jar化しない場合は動くが、jar化すると動かないとか、
Applet化すると動かないとか、Java Web Start化すると動かないとか
Servlet化すると動かないといったトラブルでは
リソースの取得の仕方に起因することがあります。

Appletを置いているサーバでのHTTP上でのフォルダ構成はどうなっていますか?
Appletを起動するためのHTML上でのAPPLETタグはどのように記述していますか?
そのような環境について点検して見ると何か見えるかもしれませんね。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-26 18:49
> ディレクトリパスはsrcフォルダと同じ階層にimgフォルダがあるのであっています。
Eclipseの牢屋の中でやっていると、あっているつもりでもあっていないことがよくあります。
同じプログラムのmain()の中で、(import java.io.*; とthrows Exceptionにして)、以下をトライしてみてください:
コード:
    File f1 = new File(".");
    File f2 = new File("..");
    System.out.println(f1.getCanonicalPath());
    System.out.println(f2.getCanonicalPath());


これで問題なければ、このほか、画像ロードの遅延が考えられます(遅いマシンの上でToolkitを直接使うとありがち)。そんなときは画像ロードをpaint()メソッドの中で絶対にやらないで、MediaTrackerを使って確実に事前ロードをすべきです。私はときどき、

while (image == null){image = 画像をロードしろ!();}

という、ずぼらもやります。

なお、nagiseさんの説明は、ホンモノのアプレットでは正しいですが、このモンダイのプログラムはAppletを単なるjava.awt.Panelとして使っているだけなので、全然関係ありません。


ちょま吉
大ベテラン
会議室デビュー日: 2004/08/04
投稿数: 112
投稿日時: 2007-11-26 19:12
最初から読んだのですが、最初の質問の意図がわからなくなりました。(私だけでしょうか?)
Appletの話なのか、単なるスタンドアロンなJavaアプリケーションの話なのか。
どっちが目的なのかによって説明も変わってきますよね?
どちらなんでしょうか。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-11-26 20:04
引用:

rancoさんの書き込み (2007-11-26 18:49) より:
なお、nagiseさんの説明は、ホンモノのアプレットでは正しいですが、このモンダイのプログラムはAppletを単なるjava.awt.Panelとして使っているだけなので、全然関係ありません。



うわー。騙されてるな自分。
Aplletをextendsしているけど関係ないのかーw
おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-27 13:29
みなさん返信ありがとうございます。
rancoさん
コード:
--------------------------------------------------------------------------------

File f1 = new File(".");
File f2 = new File("..");
System.out.println(f1.getCanonicalPath());
System.out.println(f2.getCanonicalPath());


--------------------------------------------------------------------------------
を試してみました。
結果
C:\Documents and Settings\Owner\workspace\THEORANGE
C:\Documents and Settings\Owner\workspace
と正常結果がでました。
下記をコードに追加してみましたが、変わらず表示されませんでしが。
MediaTracker tracker = new MediaTracker(this);
try {
 tracker.waitForAll();
 } catch (InterruptedException e) {
}
また、話は少しだけずれてしまうのですが、下記のアプレットでは画像は表示されました。
----------------------------------------------------------------------------
package applet;

import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;

/*
<applet code="ImageTest5.class" codebase="class" width="150" height="150">
</applet>
*/


public class Applet1 extends Applet{
Image img1;
Image img2;
Image img3;

public void init(){
img1 = getImage(getCodeBase(), "../img/1653772306.jpg");
img3 = getImage(getCodeBase(), "../img/421434439.jpg");
}

public void paint(Graphics g){
g.drawImage(img1, 0, 0, 48, 36, this);
g.drawImage(img3, 0, 48, 48, 36, this);
}

}
----------------------------------------------------------------

スキルアップ/キャリアアップ(JOB@IT)