プロが教えるわが家の防犯対策術!

javaを勉強しようと思い、参考書付属CDROMからjdk1.3.1_01をインストールした
のですが、コマンドラインでのコンパイル、classファイルの実行は出来るのです
けどGUI(Frame)を作成する時にコンパイルが出来ません。
「setSizeメソッドがありません」というようなエラーが出ます。
ライブラリが無い、もしくはディレクトリ構成が違うのかと思い、sunのHPからいろいろ
調べたのですがファイル構成がとくに間違っている様子でもなさそうです。
使用しているユーザー環境のシェルプロファイルには以下の記述でパスを通しています。

export JAVA_HOME=/usr/java/jdk1.3.1_01
PATH=$PATH:$JAVA_HOME/bin

(redhat7.1にrpmからインストールしました。ディレクトリは/usr/java/jdk1.3.1_01/
です。インストール方法とパスの記述は参考書にあったものと同様にしました。)

GUIの作成に何か他に必要なものがあるのでしょうか。または各種設定等に問題が
あるのでしょうか。どなたか助言、御指摘いただければ、と思います。

ちなみにファイル構成の確認は下記のページを参照しました。
http://java.sun.com/j2se/1.3/ja/docs/ja/tooldocs …

A 回答 (3件)

#2を書いたatonです。


見落としが一つありました。
同一ファイル内でAppFrameとFrameの2つのクラスを宣言してるんですね。
Javaでは原則一ファイル一クラスなので,これはペケです。
そもそもFrameクラスを作る意味がないので,ソースは以下のようであるべきだと思います。

<ソース ファイル名AppFrame.java>
//
// AppFrame.java -- フレームを作る
//
import javax.swing.*;

public class AppFrame extends JFrame {
public AppFrame() {
setSize(400, 300);
}
public static void main(String[] args) {
AppFrame frame = new AppFrame();
frame.show();
}
}
<ソース終り>

しかしもしpalopaloさんが#1に書かれたようなソースが参考書に載っていたのだとしたら,その参考書は捨てたほうがいいと思いますが…。
    • good
    • 0
この回答へのお礼

atonさん、ありがとうございます。このソースで早速試してみます。
また、urlを参考にさせていただきます。
moyuruさん、atonさん、ご回答いただき本当にありがとうございました。

お礼日時:2002/01/08 19:30

Javaではpublicなclassの場合,ファイル名とクラス名が一致していなければまずいはず(参考URL)。

この場合ファイル名は AppFrame.java でないとコンパイルエラーが出ます。

ちなみに,参考URLのおおもとのページ

http://www.gimlay.org/~javafaq/javafaq.html

はJavaの勉強を始める人に役立つ情報がたくさんあるので,下手な参考書より役に立つと思います。

参考URL:http://www.gimlay.org/~javafaq/S002.html#S002-04
    • good
    • 0

>コマンドラインでのコンパイル、classファイルの実行はできるのですが


それでメソッドのエラーがでるのなら単純なコードのミスだと思います。せめてソースとエラーの内容くらい載せて下さい。

この回答への補足

ご回答ありがとうございます。
問題のソースとエラー内容を書きます。

<ソース ファイル名Frame.java>
//
// Frame.java -- フレームを作る
//
import javax.swing.*;

class AppFrame extends JFrame {
public AppFrame() {
setSize(400, 300);
}
}
public class Frame
{
public static void main(String[] args)
{
AppFrame frame = new AppFrame();
frame.show();
}
}
<ソース終り>

<エラー表示 "javac Frame.java"実行時>
Frame.java:8:error:Cannot find method "setSize(int, int)"
<エラー表示終り>

Frame.javaは、始め参考書を見ながら自分で書いてみたのですが、エラーになったため
参考書付属のCDROMにあるソースをjavacしてみたけど結果は同じでした。上記ソースが
参考書付属のものです。
自分なりに、
「エラーにsetSize(int, int)のmethodが見付からない。
javax.swing.*をimportとあるので恐らくこれがsetSizeを含むライブラリ?
setSizeが無いということは、javax.swingが無い、または正しい場所に無くて読めない。」
などと考え(java関連の書物等にswingを使ってGUIを作成する。云々。とあるのでこのように
考えました。)swingがどこにあるのか?などいくつか調べましたが、今一つ理解出来ない時に
質問のなかで書いたsunのurlにたどりつき、jdkのファイル構成は間違っていないことを知り、
それでは一体何?と訳がわからなくなったのではずかしながら熟練者の知恵をお借りしようと
思った次第です。
上記の私の考えかたを含め、どんなご意見でも結構です。ご指摘くださればと思います。

補足日時:2002/01/07 19:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!