• ベストアンサー

JAVAの初歩でとても悩んでます・・

JAVAについての質問があります。とても困ってます・・。初心者の自分にもわかるようそれぞれの番号に対しての説明をしていただけると嬉しいです。 ちょっと長いのですが、例文があったのでそれを書いておきます。 (1)「メディアストラッカー」 (2)「スレッド」 (3)「インプリメント」 (4)myMt.waitForID(0) (5)myMT.checkID(0) (6)myTh = null; import java.applet.*; import java.awt.*; public class Lesson19 extends Applet implements Runnable{ Image[] myImg; int myNo; MediaTracker myMt; //メディアトラッカーオブジェクト Thread myTh; //スレッド public void init() { int count; myImg = new Image[3]; myNo = 0; myMt = new MediaTracker(this); myTh = null; for (count = 0; count < 3; count++) { myImg[count] = getImage(getDocumentBase(), "image" + count + ".gif"); myMt.addImage(myImg[count], 0); } } public void start(){ if (myTh == null) { myTh= new Thread(this); myTh.start(); } } public void run() { try { myMt.waitForID(0); } catch(InterruptedException e) {} while (true) { myNo = myNo + 1; if (myNo== 3) myNo = 0; try { myTh.sleep(1000); } catch(InterruptedException e) {} repaint(); } } public void paint(Graphics g) { if (myMt.checkID(0)) g.drawImage(myImg[myNo], 80, 80, this); g.drawString("image" + myNo, 75, 50); } }

noname#3346
noname#3346
  • Java
  • 回答数5
  • ありがとう数2

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

#2のBudgerigarです。 補足読みました。 簡単に言うと・・・ >Runnable は、Thread をサブクラス化せずにクラスをアクティブにする手段を提供します。 →RunnableはThreadを継承(extends)しなくてもThreadを使えるように出来る。 >Runnable を実装するクラスは、Thread のインスタンスを生成し →RunnableをimplementsしたクラスはThreadのインスタンスを作り、(例文のThread myTh= new Thread(this); の部分) >ターゲットとしてクラス自身を渡すことにより Thread をサブクラス化をしなくても実行できます →こうすることでThreadを継承(extends)しなくてもよい ・・・ってかんじですね。 わかりにくくてすみません。

noname#3346
質問者

お礼

とてもわかりやすかったです!! また、何かあったらよろしくおねがいします!!

その他の回答 (4)

回答No.5

>Runnableインターフェイスの中のThreadクラスの中のRunメソッドを呼び出す、という感じでいいのでしょうか?? この場合、Threadクラスが継承できないので、 代わりにrunメソッドを持っているRunnableをimplementsしてきた、 ということです。

noname#3346
質問者

お礼

なるほどー、やっとわかりました! とても参考になりました! また、よろしくおねがいします!

回答No.3

もう少し質問したい範囲を絞った方が良いですね。 範囲が広すぎるので何から説明すればよいのやら。。。 また、あなたがどこまで理解しているのかによっても 説明の仕方が変わってきますし。 implementsはインターフェースを読み込むときに使います。 インターフェースはそのままでは使えないので、implementsで読み込んだ後、 クラスの中で加工してやらなければなりません。 この場合Runnableというインターフェースはrun()というメソッドを持っていますが、 そのままでは使えないのでクラスの中で public void run() { … } と、中身を書いてやります。 (6)myTh = null; は変数myThを初期化しています。 別に適当な値を入れてもかまいませんが、 この変数が、プログラマーの知らないところで呼び出されて 値を参照されると予想できない処理をするかもしれません。 それを防ぐために普通はnullを入れておきます。 (1)(2)(4)(5)については、前回書いたアドレスを読んでみてください。

noname#3346
質問者

補足

急いでいたので、あせっていろいろ質問してしまいました。すいません・・(^^;) (6)についてはわかりました。ありがとうございます! やはり問題は「implements」やクラスの関係についてです。 今回の例文では、すでにAppletクラスが使われているので多重継承にならないように Implements Runnable と入力し、Runメソッドを呼び出しているんですよね? 考え方としてはRunnableインターフェイスの中のThreadクラスの中のRunメソッドを呼び出す、という感じでいいのでしょうか?? まだインターフェイス自体がよくわかっていないので・・。 もしよろしければその辺も教えてください。 自分のレベルは質問の時に書いた例文がなんとなく読める程度です。

回答No.2

<2>スレッドについて・・ Javaではコード上の複数の個所の処理を同時に行わすことが出来ます。 その処理の流れひとつひとつをスレッド(Thread)といいます。 で、スレッドを起動させるには・・・(3)に続きます。 <3>implementsについて・・ スレッドを起動する方法は2つあります。 (1)Threadクラスを継承する。(extends Thread) (2)Runnableインターフェイスの実装。(implements Runnable) でも、今回の例文ですとすでにAppletクラスを継承してるので(1)は使えません。なぜかというとJavaでは2つ以上のクラスを多重継承することが出来ないからです。 このようなときに(2)を使います。 こんなかんじでわかります? 説明下手でごめんなさい。

noname#3346
質問者

補足

回答ありがとうございます! あと「Platform」を見たのですが意味がよくわかりませんでした(^^;)。 「 Runnable は、Thread をサブクラス化せずにクラスをアクティブにする手段を提供します。Runnable を実装するクラスは、Thread のインスタンスを生成し、ターゲットとしてクラス自身を渡すことにより Thread をサブクラス化をしなくても実行できます。Thread クラスのメソッドのうち、run() だけをオーバーライドして使用する場合は、Runnable インタフェースを使用してください。これは、クラスの基本的な動作を修正または拡張するのでない限り、そのクラスをサブクラス化することは好ましくないため、重要です。」 いったいどういうことなのでしょうか?もしよろしければ教えてください!

回答No.1

(1)MediaTracker (2)Thread はクラス名です。そういうクラスがあります。詳細は http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/awt/MediaTracker.html http://java.sun.com/j2se/1.3/ja/docs/ja/api/java/lang/Thread.html (3)implements インターフェースRunnableに使いたいメソッドがある場合、implementsで持ってきます。 クラスから継承するときextendsを使いますね。 これのインターフェースバージョンだと認識しています。 (4)myMt.waitForID(0) (5)myMt.checkID(0) MediaTrackerクラスで使えるメソッドです。 どんなメソッドかは上のアドレスに説明があります。 (6)myTh = null; インスタンス(変数)myThにnullを代入します。 nullとは「値がない」という意味です。 これでわかりにくければまた補足します。

noname#3346
質問者

補足

回答ありがとうございます! それぞれの項目に関して、もう少し具体的に説明していただけるとうれしいです。なぜこれを使う必要があるのか、どのような特典があるのか、などなど。 特にimplementsについてなんですが、Threadのクラスはimport文ですでに使える状態になっているのになぜimplementsを使わなくてはいけないのですか? また、implementsを書くことによってどのようなことができるのですか? この辺が全くわかりません・・・。 なんかおかしな文になってしまいましたが・・。 よろしくおねがいします!

関連するQ&A

  • Javaを説明するには

    4枚の絵をパラパラアニメにするソースなのですが。これをわけ合って説明しなくてはならなくなってしまいました。 薄らぼんやりとはわかるのですが。どう説明したらいいのかさっぱり分かりません、どう説明すれば、分かりやすく正しく伝えられるでしょうか?>< import java.applet.Applet; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class DNA extends Applet implements Runnable, ActionListener { Image image[] = new Image[4]; int[] timing = { 400,350,230,350}; Thread t; int index1 = 0; int no = 0; private static final long serialVersionUID = 1L; public void init(){ for(int i = 0; i<4; i++){ image[i] = getImage(getDocumentBase(),"img"+(i)+".gif"); } } public void paint(Graphics g){ g.drawImage(image[index1],0,0,this); } public void update(Graphics g) { paint(g); if(++no==4)no=0; } public void start(){ t = new Thread(this); t.start(); } public void run() { while(true){ index1++; if(index1 == 4){ index1 = 0; } repaint(); try{ Thread.sleep(timing[no]); }catch(InterruptedException e){} }} public void actionPerformed(ActionEvent arg0) { } }

  • シンボルが見つけられません。8個のエラー。

    シンボルが見つけられません。 8個のエラーメッセージがでました。 何度も打ち直しましたが、これ以上減りません。 ドコが誤ってますか? ご多忙中申し訳ありません。 ご回答の程、宜しくお願い申し上げます。 import java.applet.*; import java.awt.*; import java.util.*; public class DigitalClock extends Applet implements Runnable { Thread thread = null; Image Digit[ ] = new Image[11]; int DigitWidth, DegitHeight; Image WorkImage; Graphics WorkGraphics; int AppletWidth, AppletHight; //初期化処理---------------------------------------------------- public void init() { AppletWidth = getSize().width; AppletHight = getSize().height; WorkImage = createImage(AppletWidth, AppletHight); WorkGraphics = WorkImage.getGraphics(); MediaTracker mediaTracker = new MediaTracker(this); for(int i = 0; i < 11;i++) { Digit[i] = getImage(getCodeBase(),"Image/" + i +".gif"); mediatracker.addImage(Digit[i],1); } try{ mediatracker.waitForID(1); } catch (InterruptedException e) { showStatus(""+e); } DigitWidth = Degit[0].getWidth(this); DegitHeight = Digit[0].getHeight(this); } //アプレット開始------------------------------------------------------- public void start() { thread = new Thread(this); thread.start(); } //描画処理-------------------------------------------------------------- public void paint(Graphics g) { g.drawImage(WorkImage, 0, 0, this); } //スレッド処理------------------------------------------------------------ public void run(){ while (thread != null) { DispTime(); repaint(); try { thread.sleep(100); } catch(InterruptedException e) { showStatus(""+e); } } } //描画更新処理再定義---------------------------------------------------------- public void update(Graphics g) { paint(g); } //時間描画-------------------------------------------------------------------- void DispTime() { //カレンダーオブジェクト作成 Calendar date = Calendar.getInstance(TimeZone.getTimezone("JST")); int hour = date.get(Calender.HOUR); int minute = date.get(Calender.MINUTE); int second = date.get(Calendar.SECOND); //作業グラフィックに描画 WorkGraphics.setcolor(color.white); WorkGraphics.fillRect(0, 0, DigitWidth*8, DigitHight); int h1 = hour / 10, h2 = hour % 10; WorkGraphics.drawImage(Digit[h1], 0,0, this); WorkGraphics.drawImage(Digit[h2], DigitWidth*1, 0, this); WorkGraphics.drawImage(Digit[10], DigitWidth*2, 0, this); int m1 = minute / 10, m2 = minute % 10; WorkGraphics.drawImage(Digit[m1], DigitWidth*3, 0, this); WorkGraphics.drawImage(Digit[m2], DigitWidth*4, 0, this); WorkGraphics.drawImage(Digit[10], DigitWidth*5, 0, this); int s1 = second / 10, s2 = second % 10; WorkGraphics.drawImage(Digit[s1], DigitWidth*6, 0, this); WorkGraphics.drawImage(Digit[s2], DigitWidth*7, 0, this); } //アプレット停止 public void stop() { thread = null; } }

    • ベストアンサー
    • Java
  • デジタル時計を表示するには?

    いつもお世話になりありがとうございます。 標記の件。 エディターはVS codeを使っております。 コードは下記です。 import java.applet.*; // Applet import java.awt.*; // Graphics, Image, Color, MediaTracker import java.util.*; // Calendar, TimeZone public class DigitalClock extends Applet implements Runnable { Thread thread = null; Image Digit[ ] = new Image[11]; // 画像データ(0~9,:) int DigitWidth, DigitHeight; // 画像データの幅と高さ Image WorkImage; // 作業用イメージ Graphics WorkGraphics; // 作業用グラフィックス int AppletWidth, AppletHeight; // アプレットの幅と高さ // 初期化処理 ----------------------------------------------------------------------- public void init( ) { AppletWidth = getSize( ).width; // アプレットの幅と高さ AppletHeight = getSize( ).height; WorkImage = createImage(AppletWidth, AppletHeight); // 作業用イメージ作成 WorkGraphics = WorkImage.getGraphics( ); // 作業用グラフィックス取得 MediaTracker mediatracker = new MediaTracker(this); // メディアトラッカー生成 for(int i = 0; i < 11; i++) { // 画像データを入力 Digit[i] = getImage(getCodeBase( ), "image/" + i + ".gif"); mediatracker.addImage(Digit[i], 1); // メディアトラッカーに入力画像を設定 } try { mediatracker.waitForID(1); // 画像入力が完了するまで待つ } catch (InterruptedException e) { // waitForIDに対する例外処理 showStatus(" "+e); } DigitWidth = Digit[0].getWidth(this); // 画像サイズ DigitHeight = Digit[0].getHeight(this); } // アプレット開始 ------------------------------------------------------------------- public void start( ) { thread = new Thread(this); // スレッド生成 thread.start( ); // スレッドスタート } // 描画処理 ------------------------------------------------------------------------- public void paint(Graphics g) { g.drawImage(WorkImage, 0, 0, this); // 作業イメージをアプレットに描画 } // スレッド実行 --------------------------------------------------------------------- public void run( ) { while (thread != null) { // スレッドが存在している間 DispTime( ); // 時刻描画 repaint( ); // 再描画 try{ thread.sleep(100); // スリープ } catch(InterruptedException e) { // 他のスレッドの割り込み例外処理 showStatus(" "+e); } } } // 描画更新処理再定義 --------------------------------------------------------------- public void update(Graphics g) { // デフォルトのupdateを再定義 paint(g); // 背景色画面クリア削除,paintのみ } // 時間描画 ------------------------------------------------------------------------- void DispTime( ) { // カレンダーオブジェクト作成 Calendar date = Calendar.getInstance(TimeZone.getTimeZone("JST")); int hour = date.get(Calendar.HOUR); // 現在時刻の時間取得 int minute = date.get(Calendar.MINUTE); // 現在時刻の分取得 int second = date.get(Calendar.SECOND); // 現在時刻の秒取得 // 作業グラフィックに描画 WorkGraphics.setColor(Color.white); WorkGraphics.fillRect(0, 0, DigitWidth*8, DigitHeight); int h1 = hour / 10, // 時間の10の桁 h2 = hour % 10; // 時間の1の桁 WorkGraphics.drawImage(Digit[h1], 0, 0, this); WorkGraphics.drawImage(Digit[h2], DigitWidth*1, 0, this); WorkGraphics.drawImage(Digit[10], DigitWidth*2, 0, this); int m1 = minute / 10, // 分の10の桁 m2 = minute % 10; // 分の1の桁 WorkGraphics.drawImage(Digit[m1], DigitWidth*3, 0, this); WorkGraphics.drawImage(Digit[m2], DigitWidth*4, 0, this); WorkGraphics.drawImage(Digit[10], DigitWidth*5, 0, this); int s1 = second / 10, // 秒の10の桁 s2 = second % 10; // 秒の1の桁 WorkGraphics.drawImage(Digit[s1], DigitWidth*6, 0, this); WorkGraphics.drawImage(Digit[s2], DigitWidth*7, 0, this); } // アプレット停止 ------------------------------------------------------------------- public void stop( ) { thread = null; // スレッドを無効 } } ご回答のほど宜しくお願い申し上げます。

    • ベストアンサー
    • Java
  • Javaアプレットとマルチスレッドの組み合わせ

    Javaアプレットとマルチスレッドを組み合わせてパラパラ漫画のようなものを作りたいのですがうまくいきません。 import java.awt.Graphics; import java.awt.Image; public class kadai4 extends java.applet.Applet implements Runnable{ Image logoImage[]; Thread runner; int current; int last=6; public void init(){ logoImage=new Image[last]; for(int i=0;i<last;i++){ logoImage[i] = getImage(getCodeBase(),"image/logo" + (i+1) + ".gif"); } } public void start(){ if(runner == null){ runner = new Thread(this); runner.start(); } } public void stop(){ if(runner != null){ runner.stop(); runner=null; } } public void run(){ while(true){ for(int i=0;i<last;i++){ current=i; repaint(); pause(400); } } } public void paint(Graphics g){ g.drawImage(logoImage[current],50,25,50,50,this); } void pause(int time){ try { Thread.sleep(time);} catch (InterruptedException e) {} } } これを実行すると推奨されない API を使用またはオーバーライドしています。というエラーが発生するのですがどうすれば良いでしょうか?他の方法でも構いません

    • ベストアンサー
    • Java
  • なぜエラーになるのかがわかりません?(長文です。)

    下記のクラス(Panel_Middle)内でパネル(pnlFd)を作成してます。しかし、メインフォームからこのクラスの"CreateMainPanel"関数を呼ぶと "pnlFd.setBounds(new Rectangle(5, 5, 110, 38));" の後に"java.lang.NullPointerException "とエラーが出ます。色々考えたのですが、理由がわかりません。 public class Panel_Middle extends Panel{ Panel_Main pnlFd = new Panel_Main("A.gif","B.gif"); Image im; //CONSTRUCT public Panel_Middle(String img) { im = Toolkit.getDefaultToolkit().getImage(img); //MediaTracker画像入力監視 MediaTracker mt = new MediaTracker(this); mt.addImage(im, 0); try { mt.waitForID(0); } catch (InterruptedException e) { } } //Print public void paint(Graphics g) { if (g.drawImage(im, 0, 0, this) != true) { System.out.println("ng"); } } public void CreateMainPanel(){   this.add(pnlFd, null); pnlFd.setBounds(new Rectangle(5, 5, 110, 38)); pnlFd.setImageInit(); } }

    • ベストアンサー
    • Java
  • java.lang.OutOfMemoryErrorというエラーがでる。

    javaを勉強しています。タイトルのように java.lang.OutOfMemoryErrorというエラーが出てしまいます。少し調べてみたらどうやらメモリーの使いすぎ(?)のようなのですが、プログラムの方に問題があるのでしょうか?それとも使えるメモリーを増やすといった解決策を取ったほうがいいのでしょうか? よろしくお願いします。プログラムはまず画像が表示されて、左クリックすると次の画像へ変わる、といった処理をするアプレットです。 package jibundesukosidutu; import java.applet.Applet; import java.awt.Graphics; import java.awt.MediaTracker; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; public class Main extends Applet implements MouseListener{ File[] imagelist; File image = new File("image"); BufferedImage drawImage; static int i = 0; MediaTracker mt = new MediaTracker(this); public void init(){ imagelist = image.listFiles();//ディレクトリの画像ファイルたちを配列に入れていく。 addMouseListener(this); try { drawImage = ImageIO.read(imagelist[i]);//drawImageメソッドで画像ファイルとして引数を取れるように、型変換しておく。 } catch (IOException e) { e.printStackTrace(); } } public void paint(Graphics g){//drawImageファイルを表示するだけ int w, h; w = getSize().width; h = getSize().height; mt.addImage(drawImage,0); try { mt.waitForID(0); } catch (InterruptedException e) { e.printStackTrace(); } g.drawImage(drawImage,0,0,w,h,this);//imagelist[0]を表示したい。 } public void mouseClicked(MouseEvent e) { int btn = e.getButton(); if(btn == MouseEvent.BUTTON1){//左クリック=進め System.out.println("左クリック"); i++; //searchFile(true); try { drawImage = ImageIO.read(imagelist[i]); } catch (IOException e1) { e1.printStackTrace(); } repaint(); }else if(btn == MouseEvent.BUTTON2){ System.out.println("右クリック"); //searchFile(false); } } public void searchFile(boolean next){ //next→次の画像、false→前の画像 } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } }

    • ベストアンサー
    • Java
  • 画像がうまく表示されません

    下のプログラムを実行すると、 最初の読みこみはうまくいくのですが、(一部出なくなる画像がありますが…) Internet Explorerの更新ボタンを押した時、 (1)の部分で止まってしまうようで、画像が表示されなくなります。 (ローカルドライブで実行した場合はうまく表示できるのですが、ネットワークで実行した場合にこのようになってしまいます) import java.applet.Applet; import java.awt.*; public class met extends Applet{ Image img[] = new Image[6]; MediaTracker mt; public void init(){ mt = new MediaTracker(this); for(int i = 0;i < 6;i++){ img[i] = getImage(getCodeBase(),i+".gif"); mt.addImage(img[i],0); } try{ mt.waitForID(0); }catch(InterruptedException e){} } public void paint(Graphics g){ // (1) if(!mt.checkID(0)){ g.clearRect(0,0,500,500); g.drawString("読み込み中",200,240); return; } g.setColor(Color.white); g.fillRect(0,0,500,500); for(int i = 0;i < 6;i++){ g.drawImage(img[i],i*50,0,this); } } }

    • ベストアンサー
    • Java
  • PacMan

    以下のようなプログラムで自動で動くパックマンを作りました。 パックマンが転がっていくのですが、どうしても目の部分の起動がかけません。 どなたかお力を貸していただけないでしょうか? ================================================= import java.applet.Applet; import java.awt.*; import java.awt.event.*; import java.util.*; /* <applet code="PacMan2.class" width="500"height="500"> </applet> */ public class PacMan2 extends Applet implements Runnable { volatile Thread thr; volatile boolean runFlag = true; public void start() { thr = new Thread(this); runFlag = true; thr.start(); } public void stop() { runFlag = false; thr = null; } public void run() { while (runFlag) { repaint(); try { Thread.sleep(1000); //1,000 mili-seconds } catch(InterruptedException e) { runFlag = false; } } } public void paint(Graphics g) { Calendar cal = Calendar.getInstance(); int s = cal.get(Calendar.SECOND); g.setColor(new Color(128,255,255)); g.fillArc(100+s,100,60,60,45-s,300);   g.setColor(new Color(0,0,0)); g.fillOval(130,105,10,10); } } =================================================

    • ベストアンサー
    • Java
  • Java applet

    Java appletを使用する課題なのですが、 途中まで書いて、それから止まってしまっています。 アドバイスなど頂ければ嬉しいです。 課題は、 (1)右から左へ動く文字列左から右へ動く文字列とを表示 (2)文字列が消えたらまた出てくるようにする (3)マウスのクリックボタンを押すと止まり、離すと動きだすようにする (2)まで考えたプログラム(コンパイル、実行済)を以下に載せます。 import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class SasakiYui extends Applet implements Runnable{ Thread th = null; Graphics g; int x; public void init(){ setBackground(Color.white); } public void start(){ if(th == null){ th = new Thread(this); th.start(); } } public void run(){ while(!Thread.interrupted()){ for(x=600;x>-300;x=x-5){ repaint(); try{ Thread.sleep(50); } catch(InterruptedException e){} } } } public void paint(Graphics g){ g.drawString("Happy Brithday!",x,10); g.drawString("Happy Birthday!",600-x,40); } } (3)ができるようにするには、 addMouseListener(new Mouseadapter(){ public void mousePressed(MouseEvent e){……} を使用するのだろうとは思うのですが、 ・これを組み込むのはpublic void init(){の後で良いか ・……の部分に何を書けばいいのか の2点がわかりません; よろしければ、アドバイスお願い致します!

    • ベストアンサー
    • Java
  • Javaゲーム

    import java.applet.Applet; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; import java.awt.event.KeyEvent.*; import java.awt.image.BufferStrategy; import java.awt.Image; public class sinkeisuijaku extends JApplet implements ActionListener{ int okcnt = 0; int Imclick[] = new int[2]; int opnImg = 0; int n = -1; int sw = -1; boolean flag = false; boolean KeySpace; int indx1 = 0; int pict1[] = new int[36]; int ch[] = new int[36]; int ran[] = new int[36]; int i,j,y; int GameTitle = 0; int GameRuleGamen = 1; int actionPerformed = 2; int gamestate; int scene; Thread gameThread; boolean keySpace; BufferStrategy bstrategy; Graphics g = bstrategy.getDrawGraphics(); Image ImageIcon; Image GameTitle,GameRuleGamen; Image offImage; int Image1[] = new int[36]; Icon fruit = new ImageIcon("hgi19.gif"); Icon hgif[] = new Icon[18]; JPanel pan1,pan2,pan3; JButton btn[] = new JButton[36]; JButton sbtn = new JButton("はじめ!!"); JTextField tx = new JTextField("Second"); public void init(){ (以下関係ないので省略) } public void start() { if(gameThread == null) { gameThread = new Thread(this); gameThread.start(); } } public void run() { while (true) { try { Thread.sleep(10); } catch (InterruptedException e) { break; } public void stop(){ gameThread = null; } public void run(){ while (gameThread == Thread.currentThread()) { switch (gamestate) { case 0:GameTitle(); break; case 1:GameRuleGamen(); break; } try { Thread.sleep(20); } catch (InterruptedException e) { break; } } } public void GameTitle() { if (keySpace)scene =1; Graphics gv = offImage.getGraphics(); gv.clearRect(0, 0, 500, 500); gv.setColor(Color.PINK); gv.setFont(new Font("SansSerif", Font.BOLD, 28)); gv.drawString("★神経衰弱☆", 25, 180); gv.setFont(new Font("SansSerif", Font.PLAIN, 22)); gv.drawString("PRESS SPACE KEY!!", 70, 350); GameTitle = getImage(getDocumentBase(), "fruit.gif"); gv.drawImage(GameTitle, 500, 500, null); repaint(); } public void GameRuleGamen() { if (keySpace) scene = 2; Graphics gv = offImage.getGraphics(); gv.clearRect(0, 0, 500, 500); gv.setColor(Color.PINK); gv.setFont(new Font("SansSerif", Font.BOLD, 28)); gv.drawString("☆ルール説明★", 25, 180); GameRuleGamen = getImage(getDocumentBase(), "fruit.gif"); gv.drawImage(GameRuleGamen, 500, 500, null); repaint(); } public void actionPerformed(ActionEvent e){ (以下関係ないので省略) } 現在Javaでゲームを作っています。どんなのかを詳しく説明しますと、 タイトル画面(スペースキーを押せば次の画面に切り替わる) ↓ ルール説明画面(スペースキーを押せば次の画面に切り替わる) ↓ ゲーム画面 こんな感じです。 ですが、タイトル画面、ルール説明画面、そしてそれらの画像がなかなか表示されません。 あと実行してみたら… sinkeisuijaku.java:95: 式の開始が不正です。 public void stop(){ ^ エラー 1 個 というエラーが発生しました。 誰か教えていただけないでしょうか?タイトル画面、ルール画面、画像読み込みのプログラムソースと一緒に教えて下さると有難いです。