- PR -

getToolkit()でエラーが出ます。

投稿者投稿内容
会議室デビュー日: 2006/09/11
投稿数: 11
投稿日時: 2006-09-12 23:38
昨日、こちらでアプリケーション作成時の不具合について投稿させていただいた凛です。
今日はまた別のエラーが取れずに四苦八苦しています。
エラーの内容は、getToolkit()についてです。
メニューバーを作成し、ファイルを開く操作を記述しようとしたところ、getToolkit()について、「シンボルを解決できません」というエラーが出てしまいます。
作っているソースは↓です。

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

public class MBar{
  final static JMenuBar menuBar = new JMenuBar();
  Image img;

  public MBar(){
   JMenu menuFile = new JMenu("ファイル(F)");
   JMenuItem menuOpen = new JMenuItem("開く(O)");
   JMenuItem menuSave = new JMenuItem("保存(S)");
   JMenuItem menuExit = new JMenuItem("終了(X)");
   JMenu menuHelp = new JMenu("ヘルプ(H)");
   JMenuItem menuUse = new JMenuItem("使い方(U)");

   menuFile.setMnemonic('F');
   menuOpen.setMnemonic('O');
   menuSave.setMnemonic('S');
   menuExit.setMnemonic('X');
   menuHelp.setMnemonic('H');
   menuUse.setMnemonic('U');

   menuOpen.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
     FileDialog fd = new FileDialog(new Frame(),"開く",FileDialog.LOAD);
     fd.setVisible(true);

     if(fd.getFile() == null) return;
     String fullpath=fd.getDirectory()+fd.getFile();
     img = getToolkit().getImage(fullpath);
    }
   });

   menuSave.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent e) {
     FileDialog fd = new FileDialog(new Frame(),"開く",FileDialog.SAVE);
    }
   });

   menuExit.addActionListener(new ActionListener(){
    public void actionPerformed(ActionEvent evt){
     System.exit(0);
    }
   });

   menuBar.add(menuFile);
   menuFile.add(menuOpen);
   menuFile.add(menuSave);
   menuFile.addSeparator();
   menuFile.add(menuExit);
   menuBar.add(menuHelp);
   menuHelp.add(menuUse);
  }
}

なぜエラーが出るのか、どのようにすればエラーが出なくなるのか、ご教授よろしくお願いいたします。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-09-13 09:07
引用:

凛さんの書き込み (2006-09-12 23:38) より:
メニューバーを作成し、ファイルを開く操作を記述しようとしたところ、getToolkit()について、「シンボルを解決できません」というエラーが出てしまいます。



エラーメッセージには何が問題なのかという答えが書かれています。
実行時に例外が出る、またはコンパイル時にエラーが出る場合、
そのエラーメッセージ全文を提示しましょう。
会議室デビュー日: 2006/09/11
投稿数: 11
投稿日時: 2006-09-13 09:19
引用:

nagiseさんの書き込み (2006-09-13 09:07) より:
エラーメッセージには何が問題なのかという答えが書かれています。
実行時に例外が出る、またはコンパイル時にエラーが出る場合、
そのエラーメッセージ全文を提示しましょう。



申し訳ございません。改めて、エラーメッセージの前文を書いておきます。

MBar.java:37: シンボルを解決できません。
シンボル: メソッド getToolkit ()
img = getToolkit().getImage(fullpath);
^
エラー 1 個

上記のようなエラーメッセージが表示されます。
どうぞよろしくお願いいたします。
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-09-13 09:33
そのgetToolkitメソッドはどこに定義されているんですか?
会議室デビュー日: 2006/09/11
投稿数: 11
投稿日時: 2006-09-13 09:45
想馬さま。
>そのgetToolkitメソッドはどこに定義されているんですか?
ソースの中にはgetToolkitメソッドは定義していません。
やはり定義しないと動かないのでしょうか?
以前、別のプログラムを作ったときには、getToolkitメソッドを作らなくても、画像の格納が出来たのですが、今回はそのようにはいかないのでしょうか?
想馬
大ベテラン
会議室デビュー日: 2003/05/29
投稿数: 245
お住まい・勤務地: 神奈川・東京
投稿日時: 2006-09-13 09:58
>以前、別のプログラムを作ったときには、getToolkitメソッドを作らなくても、画像
>の格納が出来たのですが、今回はそのようにはいかないのでしょうか?

それはgetToolkitメソッドを持つクラスを継承していたからでしょう。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-09-13 10:01
引用:

凛さんの書き込み (2006-09-13 09:45) より:
ソースの中にはgetToolkitメソッドは定義していません。
やはり定義しないと動かないのでしょうか?
以前、別のプログラムを作ったときには、getToolkitメソッドを作らなくても、画像の格納が出来たのですが、今回はそのようにはいかないのでしょうか?



作ってもいないのに動いたらそれはそれで怖いのですが
メソッドを利用できるということはどこかに実装が書いてあるということです。

http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/awt/Component.html#getToolkit()

たぶん、そのときはjava.awt.Componentを継承していたので
親クラスのgetToolkit()が利用できた、今回は違うので利用できない、
というあたりでしょう。

どこで定義されているのかわからないメソッドやフィールド、変数などに
出くわした場合、コンパイラは「シンボルを解決できません」と警告します。
「シンボル」ってのはそういった代物を表していると思えば
理解できる…のだろうか。やっぱり解りにくいメッセージだよなぁ。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2006-09-13 11:24
前回も今回もAppletじゃないでしょうか。
前回はJAppletを継承しているのに、今回はしていない。

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