- - PR -
frame.setBounds()について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-11-26 13:21
えぇ。点検しないといけないことはranco氏の言うとおりですとも。 さらに「何を」点検するのか、「何故」点検しないといけないのか 的確に指摘するとやり取りが少なく済むのではないでしょうか。 「点検」のひとことで済むなら、ここのBBSに投稿される問題は全て 「点検しろ」「デバッグしろ」で片付くことになりますね でも実際にはそうではないでしょう? | ||||
|
投稿日時: 2007-11-26 13:52
そうか、「環境」という言葉が難しいかもしれませんね。
私としては、プログラムのコードか、それともそれを動かす環境か、という二分法を言っているつもりでした。 今回の問題でも、不具合の原因となっている環境の要素は意外と複数あるかもしれない。だからあえて、ファイルパスだけとは特定しなかったのです(いちばん疑わしいことは疑わしいが)。おれんじーさんが、A要素を調べてAはOKだったら、次はB要素を調べてみるとか、ご自分でやってみるのがいちばんです。 | ||||
|
投稿日時: 2007-11-26 15:38
nagiseさん、どうもありがとうございます。
今まだ解決に至っていません。 ちなみに、exceptionはでていません。 また、ディレクトリパスはsrcフォルダと同じ階層にimgフォルダがあるのであっています。もう少し自分で頑張ってみます。 | ||||
|
投稿日時: 2007-11-26 17:16
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タグはどのように記述していますか? そのような環境について点検して見ると何か見えるかもしれませんね。 | ||||
|
投稿日時: 2007-11-26 18:49
> ディレクトリパスはsrcフォルダと同じ階層にimgフォルダがあるのであっています。
Eclipseの牢屋の中でやっていると、あっているつもりでもあっていないことがよくあります。 同じプログラムのmain()の中で、(import java.io.*; とthrows Exceptionにして)、以下をトライしてみてください:
これで問題なければ、このほか、画像ロードの遅延が考えられます(遅いマシンの上でToolkitを直接使うとありがち)。そんなときは画像ロードをpaint()メソッドの中で絶対にやらないで、MediaTrackerを使って確実に事前ロードをすべきです。私はときどき、 while (image == null){image = 画像をロードしろ!();} という、ずぼらもやります。 なお、nagiseさんの説明は、ホンモノのアプレットでは正しいですが、このモンダイのプログラムはAppletを単なるjava.awt.Panelとして使っているだけなので、全然関係ありません。 | ||||
|
投稿日時: 2007-11-26 19:12
最初から読んだのですが、最初の質問の意図がわからなくなりました。(私だけでしょうか?)
Appletの話なのか、単なるスタンドアロンなJavaアプリケーションの話なのか。 どっちが目的なのかによって説明も変わってきますよね? どちらなんでしょうか。 | ||||
|
投稿日時: 2007-11-26 20:04
うわー。騙されてるな自分。 Aplletをextendsしているけど関係ないのかーw | ||||
|
投稿日時: 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); } } ---------------------------------------------------------------- |