前提・実現したいこと
全国のいくつかの神社や寺を紹介する対話的アプリケーションを作成したいです。
あらかじめ日本地図を表示させ、画面上部にある「岩手」「長野」「京都」のボタンを押すと、それぞれの地域の有名な神社や寺の画像を表示させて、その紹介分も表示させたいです。また、ウィンドウ上でドラッグすると、7つの有名な神社や寺の画像を表示させたいです(文字なし)。
ウィンドウに出入りするときに音を鳴らし、ウィンドウ上の作業をすべて消すボタン(消去ボタン)を押すときも音を鳴らします。
どのようにすれば上記の内容のアプリケーションが作成できますか?
作成中のものはこの通りです。超初心者ですので滅茶苦茶かもしれませんが、どなたかよろしくお願いいたします。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
エラーメッセージ ```エラー: 型の開始が不正です エラー: ';'がありません エラー: 無効なメソッド宣言です。戻り値の型が必要です エラー: ')'がありません エラー: <identifier>がありません エラー: class、interfaceまたはenumがありません ### 該当のソースコード ```java import java.awt.*; import java.awt.event.*; import java.applet.AudioClip; import javax.swing.JApplet; public class Project2020_2a extends Frame { /* ここは、プログラムのどこからでも使いたい 変数などを宣言しておくフィールドです。 変数や、オブジェクトの入れものを用意しています。 */ // マウスのx座標の記録用変数 Mx, y座標の記録用変数 Myです。 int Mx = 0, My = 0; // // gを、標準グラフィクス描画対象として使います。 Graphics g; // // g2を、高度なグラフィクス機能(Graphics2D)を使う場合の描画対象として使います。 Graphics2D g2; // // Frame部品の一種である自分を、リスナーオブジェクトから呼び出せるようにするために、 // 入れ物 myFrame を用意します Frame myFrame; // // 画像ファイルから読み込む複数の画像を入れるためのオブジェクトです //(今回は配列として用意)。 Image img[]; // // 音声ファイルを入れるためのオブジェクトです(今回は配列として用意)。 AudioClip ac[]; // // ボタン部品の入れ物 bt1 を用意します。 Button bt1,bt2,bt3,bt4; // // 描画する画像番号を指定するための変数です(ドラッグ動作ごとに0~9を循環させます)。 int m = 0; // ////////////////////////////////////////// //① このプログラムの起動 ////////////////////////////////////////// public static void main(String[] args) { //② このプログラム本体の生成 Project2020_2a pj = new Project2020_2a(); // ③へ } //③ このプログラムの生成内容 (この部分はコンストラクタと呼ぶ) public Project2020_2a() { //④ ウインドウタイトルの設定 super("Project2020 ProKisoB"); // 自分自身(this) を、どこからでも呼び出せるように myFrame に代入しておきます。 myFrame = this; // // このアプリケーションが持つ描画面を受け取り、gという名前で呼び出せるようにします。 g = myFrame.getGraphics(); // // Graphics2Dの機能を使う場合は、g2として呼び出せるようにします。 g2 = (Graphics2D) g; // // 背景を明るい水色に着色します。 setBackground(new Color(210, 245, 240)); // // // 用意しておいた10枚の画像を順番に画像用配列img[]に読み込み、 //プログラム中で利用できるようにしています。 // ファイル名は T0.GIF~T9.GIF ですが、for文で数字部分を変えながら // ファイル名を指定しています。 Toolkit tk = getToolkit(); img = new Image[10]; for (int i = 0; i < 10; i++) { img[i] = tk.getImage("src/images/japan.png"); } // 用意しておいた3つの音を順番に音の格納用配列に読み込み、 // プログラム中で利用できるようにしています。 int numSounds = 4; ac = new AudioClip[numSounds]; for (int i = 0; i < numSounds; i++) { ac[i] = JApplet.newAudioClip(getClass().getClassLoader().getResource("sounds/ss"+i+".wav")); } // //ボタンの組み込み bt1 = new Button("岩手"); bt2 = new Button("長野"); bt3 = new Button("京都"); bt4 = new Button("<消去ボタン>"); // 画面にボタンを貼り付けます。2コ以上作成すると順番に左から並びます。 this.setLayout(new BorderLayout()); this.add(bt4, BorderLayout.NORTH); // ボタンbt1に リスナー(ボタンの場合はアクションリスナー)を貼り付けます。 bt4.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { // ボタンを押した際に、画面を消して、paintメソッドを呼んでいます。 // これにより最初の画面を再描画しています。 repaint(); // 3番の音を再生させています。 ac[3].play(); } }); bt1 = new Button("岩手"); bt1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { Toolkit tk = getToolkit(); img[0] = tk.getImage("src/images/iwate.png"); repaint(); } }); bt2 = new Button("長野"); bt2.addActionListner(new ActionListner() { public void actionPerformed(ActionEvent ae) { Toolkit tk = getToolkit(); img[1] = tk.getImage("src/images/iwate.png"); repaint(); } }); bt3 = new Button("京都"); bt2.addActionListner(new ActionListner() { public void actionPerformed(ActionEvent ae) { Toolkit tk = getToolkit(); img[2] = tk.getImage("src/images/kyoto.png"); repaint(); } }); } /////////////////////////////////////////////////////////////////////////// // (1)マウスの瞬間動作に反応する「イベントリスナー」MouseListenerの登録 /////////////////////////////////////////////////////////////////////////// this.addMouseListener( new MouseAdapter() { // ①マウスがクリックされたときの処理 public void mouseClicked(MouseEvent e) { System.out.println("(1)クリックされました..."); //マウスの位置に画像を描画しています。 //また、描画のたびに画像番号を切り替えています)。 Graphics g = myFrame.getGraphics(); m++; m = (m > 9) ? 0 : m; g.drawImage(img[m], e.getX(), e.getY(), myFrame); } // ②マウスカーソルが画面内に入ったときの処理 public void mouseEntered(MouseEvent e) { System.out.println("(2)画面に入りました..."); ac[0].play(); } // ③マウスカーソルが画面から出たときの処理 public void mouseExited(MouseEvent e) { System.out.println("(3)画面から出ました..."); } // ④マウスボタンが押されたときの処理 public void mousePressed(MouseEvent e) { System.out.println("(4)ボタンが押されました..."); ac[1].play(); } // ⑤マウスボタンを放したときの処理 public void mouseReleased(MouseEvent e) { System.out.println("(5)ボタンが放されました..."); } public void actionPerformed(ActionEvent e) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } private void setsize(int i, int i0) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } }); /////////////////////////////////////////////////////////////////////////// // (2)マウスの連続動作に反応する「イベントリスナー」MouseMotionListenerの登録 /////////////////////////////////////////////////////////////////////////// this.addMouseMotionListener( new MouseMotionAdapter() { // ⑥ドラッグしたときの処理 @Override public void mouseDragged(MouseEvent e) { } // ⑦マウスを動かしたときの処理 @Override public void mouseMoved(MouseEvent e) { System.out.println("(7)マウス移動中です..."); } }); //⑤ ウィンドウを閉じるための動作の設定 addWindowListener(new SampleWindowListner()); //⑥ ウィンドイの表示サイズの設定 setSize(600, 600); //⑦ ウィンドウ部品(Frame)を表示させる(指示しないと表示されない) setVisible(true); //⑧ 表示のための処理 ⑨へ } public void paint(Graphics g) { this.g = g; //⑩ 描画用部品gに文字列を書き込む ()内に,文字列,x座標,y座標を書く //文字フォントを作成します。 Font f = new Font("TimesRoman", Font.BOLD, 12); // フォントを画面に設定します。 g.setFont(f); g.setColor(Color.BLUE); g.drawString("== プロジェクト課題 2020 ==", 50, 50); g.setColor(new Color(100, 200, 100)); g.drawString("背景として、最初に書いておきたい画像や図形は、paintメソッドで描いておきます", 50, 80); g.drawImage(img[0], 100, 100, this); } private void addMouseListener(MouseAdapter mouseAdapter) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } private void addMouseMotionListener(MouseMotionAdapter mouseMotionAdapter) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } // ウィンドウを閉じる動作で行う処理(変更不要) class SampleWindowListner extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } }
試したこと
4つのボタンを作成してみたが、エラーが多数出てしまった。
日本地図を初めから表示させるためにmouseDraggedの操作を消してみた。
補足情報(FW/ツールのバージョンなど)
こちらのコードは手を加えたものです。エラーが多数発生してしまいました。
一切手を加えていないコードをご覧になりたい場合は教えて下さい。
あなたの回答
tips
プレビュー