- PR -

frame.setBounds()について

投稿者投稿内容
おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-25 16:40
Eclipse3.3、JDK1.6の環境です。
アプレットの動作事態はロジック通りなのですが、frame.setBounds()の設定内容が全く反映されません。
setSize()も同様にウインドウの大きさが変わりません。
ご教授のほど宜しくお願いします。
ちなみに下記のコードで実行してみました。
package applet;

import java.awt.*;
import javax.swing.*;

public class ApTest extends JFrame {
/**
* @param args
*/
public static void main(String[] args) {

JFrame frame = new JFrame("画像表示テスト");

frame.getRootPane().setVisible(false);
frame.setBounds(10, 10, 600, 600);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

private Image image;
public void paint(Graphics g) {

image = getToolkit().createImage("../img/421434439.jpg");
if(!(image == null)) {
g.drawImage(image,10,10,200,300,this);
}
}
}


[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-25 18:06 ]

[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-25 18:09 ]

[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-27 23:27 ]

[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-28 15:59 ]
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-25 20:46
要するにあなたの現状はJavaのグラフィクスプログラミングの基本を習得していないということですね。ここなんか、とてもいいんですが:
http://java.sun.com/docs/books/tutorial/ui/overview/index.html
http://java.sun.com/docs/books/tutorial/ui/features/index.html
http://java.sun.com/docs/books/tutorial/uiswing/index.html
以下に、とりあえず、ごく平凡なコードを提示しておきます。でもヘンだよね、Appletがこんなとこにこんなお絵かき目的で使われるなんて…。
--------------------------------------------------------------
コード:
import java.applet.Applet;

import java.awt.*;
import javax.swing.*;

public class ApTest extends Applet {
private static Image image;

public static void main(String[] args) {
image = Toolkit.getDefaultToolkit().createImage("images/9-1-06oo.jpg");

JFrame frame = new JFrame("画像表示テスト");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(new ApTest(), BorderLayout.CENTER);

frame.setBounds(10, 10, 600, 600);
frame.setVisible(true);
}

public void paint(Graphics g) {
if (image != null){
g.drawImage(image, 10, 10, 200, 300, this);
}
}
}


----------------------------------------------------------------


[ メッセージ編集済み 編集者: ranco 編集日時 2007-11-25 20:47 ]
おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-25 23:05
回答ありがとうございます。
おっしゃるとおりです。今までアプレットは避けてきたので全くの知識がありません。
書いていただいた↑のコードで画像ファイルを自分のに代えて実行しましたが、悪化してますw
画面サイズは変わらないままで、かつ、画像が表示されなくなっています。
また、参考までに、質問のコードは参考書に載っていたコードです。
ただ、参考書はJFrameを継承させる書き方をしていましたが、画像が表示されない為、Appletを継承させるように自分で変更を加えたのです。
ちなみに、JFrameを継承させた場合、画面サイズは変更されるが画像が表示されない状況です。
そもそも、Appletを使用するのにmainメソッドを使用している時点で素人でしたねw
なんかこんがらがってきましたw


[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-25 23:20 ]

[ メッセージ編集済み 編集者: おれんじー 編集日時 2007-11-25 23:38 ]
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-26 08:37
> 画像が表示されなくなっています。
画像はちゃんと表示されます!!!
ひとのコードのせいにしないでほしい(泣)。
自分で自分の環境をよく点検しなさい。


おれんじー
会議室デビュー日: 2006/10/19
投稿数: 14
投稿日時: 2007-11-26 10:00
いやwだからそれが質問ですよw
質問の解答をお願いしますw
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-26 10:13
だから、自分の環境を自分で点検しなさいと言ってるんです。正常な環境と正常なファイル(そして正しいファイルパス)であれば、画像はまともに表示されます。ひまがないので、お金をいただいても、あなたの現場への出張点検はできません。あしからず。

自力で基本的な環境点検もできないなら、プログラミングなどしてはいけません。
(なーんか、私のコードを勝手に書き換えてむちゃくちゃにしているか、またはEclipseのパス構造を理解しないままコードを書いているか、どっちかじゃないかな。月の裏側からの想像にすぎないけど…。)



[ メッセージ編集済み 編集者: ranco 編集日時 2007-11-26 10:25 ]
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-11-26 12:00
実際に試したわけじゃないけど、ranco氏の主張からすればポイントになるのは
コード:
 image = getToolkit().createImage("../img/421434439.jpg"); 


の部分なのかな?

ファイルの相対指定しているから

引用:

自分の環境を自分で点検しなさいと言ってるんです。正常な環境と正常なファイル(そして正しいファイルパス)であれば、画像はまともに表示されます。



という話になっているのでは。
ローカル実行する場合以外はClassLoaderを使ってgetResourceAsStream()したほうがいいかも。

ranco氏の言いたいこともわかるけど、直接表現を避けるだけ避けておいて
分かれというのもちょっと酷な気がする。
分かりやすさという観点からすればやはり結論から書くのが
技術系の文章表現としては好まれるでしょう?論文だって概観から入るわけだし。
もちろん、自分で試して解決を図ってねというのが前提だけれども。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2007-11-26 12:13
はいはい。アドバイスありがとうごさいます。
でも、
> ("../img/421434439.jpg")
これを書いたのは本人と本人の環境ですから、遠方の私には点検できませんね。
だから、自分の環境ぐらい自分で点検しろって言ったんです。

('..'が、本人の気持ちではxyz、Eclipseにとってはabc、ってことが、初心者のエラーとして非常に頻繁にありますね。しかもIDEはExceptionが見にくいし…。)

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