- PR -

frame.setBounds()について

投稿者投稿内容
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2007-11-27 18:20
あれ? まだ解決してなかったんですか? ranco さんがソースコードを提示してくれているのに。たいして長いソースコードじゃないんだから、ちゃんと提示してもらったソースコードと見比べて点検しなさいよ。「Appletを単なるjava.awt.Panelとして使っているだけ」というヒントまでもらっているんだから。

結論は frame.getContentPane().add(new ApTest()) してなかったってことでしょう?

もうちょっとデバッグ手法を身につけたほうがいいですよ。画像ファイルパスが怪しいのであれば、実際に image の参照がどうなっているか、image を使用しているところで確認してみればいいじゃないですか。そのような行動をとれば、そもそも paint メソッドが呼ばれていないということに気づくでしょう。そしたら、次は paint メソッドが呼ばれていない理由を考える。repaint メソッドを使ったら、無理やり paint メソッドを呼べるかな? あれ、paint メソッド、repaint メソッドの主体(インスタンス)が見当たらない。あ、ApTest をまったくインスタンス化していないじゃないかと。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-27 20:18
> 結論は frame.getContentPane().add(new ApTest()) してなかったってことでしょう?

私の今現在のはちゃめちゃな想像渦巻く脳内世界では、おれんじーさん、または馬鹿なEclipseは、ちゃんとmain()のあるアプリケーションを、Appletとしてrunしようとしたんではないでしょうか。一応、クラスがAppletをextendsしてるから。しかしそうするとそれは、まったくアプレットの形をしていませんから、なーんも表示されない…と。まあ、現場を見れないわれわれが悩みまくるよりも、本人がいろんな「ドジ仮説」を検証していくのがいちばんです。
おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-27 23:26
rancoさんちゃんと読んでくださいw
アプレットだときちんと表示されてるんですw
JFrameをextendsすると表示されないのです。
まあ、そもそも、appletを継承してる時点でおかしいのですが、すみません。
今の問題点は、JFrameを継承した形で最初に掲示したコードで画像が表示されないということです。
>ぬしさん
frame.getContentPane().add(new ApTest());
なぜ、自分のクラス内で自分のクラスをインスタンス化しているのですか?
それだと当然エラーになります。
そもそも、呼び出されていないというのが間違っていると思います。
解答いただいたのに申し訳ないです。
また、このソースコード事態は間違っていないと思っています。
なぜなら、サンプルコードとして頂いたコードでrancoさんの環境では表示され、私の環境では表示されないからです。
今回、かなり話が問題点からずれてしまっていると思われます。
デバッグ?今起きている問題はデバッグで解決できる問題ではありません。
何故ならソースコードは間違っていないからです。


[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-27 23:31 ]
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2007-11-28 00:39
引用:
なぜ、自分のクラス内で自分のクラスをインスタンス化しているのですか? それだと当然エラーになります。


本当に? エラーになることを自分で確認しましたか?

引用:
そもそも、呼び出されていないというのが間違っていると思います。


「思います」じゃなくて、ちゃんと確認してください。あなたがオーバーライドした paint メソッドは呼び出されていたのですか? 呼び出されていなかったのですか?

おそらく、Java というか、オブジェクト指向言語のことが、これっぽっちも分かっていないのだよね。あなたは、new JFrame("画像表示テスト") というように JFrame をインスタンス化しているだけで、せっかく paint メソッドをオーバーライドした ApTest クラスを、まったくインスタンス化していない。

というか、既存の書き込みのソースコードを修正するのはやめて欲しい。こっそり、スーパークラスを Applet から JFrame に変更しやがって。私の親切な指摘がまとはずれみたいじゃないか。それに、あとから読んだ人は、JFrame に paint メソッドを使っていることを誰も突っ込まないのかと不思議に思うでしょうね。いい加減、あきれたので降ります。
おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-28 01:03
ぬしさん
気を害されたようで申し訳ないのですが
実際のところ、エラーがでるところを確認しました。
また、pain()については、呼び出されていました。
確認方法としては、g.drawline()を使用し確認しました。
また、ソースの修正に関しては、JFrameの話なのにAppletの話が出てきているので、ややこしくならないように修正しました。
また、修正日時が入っているので、改ざんとみなされるのはどうかと思います。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-28 09:17
> アプレットだときちんと表示されてるんですw
あたりまえじゃないですか。あんたが最後に作ったのは、正しいアプレットの形をしているアプレットだから。

私が言ったのは、
あんた、または馬鹿Eclipseが、JFrameとmain()のあるアプリケーション(Appletをextendsしているがアプレットの形をしていない)を、アプレットとして動かしたから、なにも表示されない結果になったのでは?、ちゅうことです。

> rancoさんちゃんと読んでくださいw
それは、こっちがあんたに言うせりふじゃ!!プンプン。
--------------------------------------------
071128 09:41追記:
> アプレットの動作事態はロジック通りなのですが、frame.setBounds()の設定内容が全く反映されません

これはおれんじーさんの最初の投稿からの引用です。どうやら、「未記入ぬし」さんの最初のご指摘が、結論のような気がしてきました。おれんじーさんは、逆に、アプリとして動かすことを、やんなかったのかな?。


[ メッセージ編集済み 編集者: ranco 編集日時 2007-11-28 09:41 ]
おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-28 10:10
だからちゃんと読んでくださいw
はじめに掲示したコードで
appletを継承した場合setBounds()つまり画面のサイズと位置の設定が反映されないが画像が表示されたというひとつのヒントですねw
で、普通にJFrameを継承し作ると、setBounds()の設定は反映されるが、画像が表示されないということですw
最後のほうで掲示したアプレットの例を指しているわけではないのです。
以上。

[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-28 10:13 ]
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-28 10:21
はいはい。すいません。そもそも、プログラムそのものがヘンなんですよ。

> appletを継承した場合setBounds()つまり画面のサイズと位置の
> 設定が反映されないが画像が表示されたというひとつのヒントですねw
アプレットを表示してれば、main()のJFrameのほうは関係ないですからね。アプレットの入り口はmain()じゃなく、init()ですから。ですから逆に、アプリケーションとして動かせばJFrameが正しく表示されるはずです。

> で、普通にJFrameを継承し作ると、setBounds()の設定は反映されるが、
> 画像が表示されないということですw
それは、JFrameのcontent paneに何もadd()していないからです。

(なぜ、あなたは、文の最後にwを書くのですか??)

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