• 締切済み

JavaのsetVisibleについて質問です

JavaでPC用の簡単なゲームアプリを作っています。 1.タイトル画面が表示される 2.スタートボタンを押す 3.タイトル画面からゲーム画面になる 4.ゲームが始まる という風になっているのですが、 ゲームが始まった後、キー入力もマウス入力にも反応しません。 一度ゲームウィンドウ以外をクリックした後、 ゲームウィンドウをクリックすると反応するようになります。 ゲームが始まった後の反応しないのを改善する方法が分からず困っております。 setVisibleの書き方が悪いのかと思っているのですが、よく分かりません。 Javaに詳しい先輩方、どうかお力をお貸しください。よろしくお願いいたします。 https://www.dropbox.com/s/q2v2fm2dc6mmfft/PuyoPJ.java?dl=0

  • Java
  • 回答数2
  • ありがとう数1

みんなの回答

  • KSOH
  • ベストアンサー率93% (29/31)
回答No.2

MainPanelの実装が不明なので推測です。 KeyEventがこない原因はフォーカスがMainPanelに移動していないことが原因と思います。例えば入力を受け付けるようなコントロールが全くない単なるJComponentとかレイアウトコンテナ(JPanelなど)だったりするとデフォルトではフォーカスを必要しないとみなされフォーカスは移動してこないので、そういったことが原因ではないでしょうか。とりあえずの対処は例えば以下のようにすることです。 mainPanel = new MainPanel(); add(getContentPane(), BorderLayout.CENTER); mainPanel.setFocusable(true); // MainPanelのコンストラクターに書くべきかな mainPanel.requestFocusInWindow(); // とりあえず直接フォーカスを要求する 上の例はコメントに書いてあるようにテキトーな方法です。ちゃんと作るには以下のURLなどでフォーカスの仕組みを理解した上で実装すべきかと思います。 http://docs.oracle.com/javase/tutorial/uiswing/misc/focus.html MouseEventはどうして配送されてこないかはわかりません。試しにやってみましたがMouseMotionEventとかMousePressedとかは配送されるようですが。MouseEventのハンドラーの実装に何かミスがあるくらいしか思いつきません。

  • usami33
  • ベストアンサー率36% (808/2210)
回答No.1

関連するQ&A

  • javaがインストールできません

    javaはDLはできるのですが、いざインストールしようとするとクリックしてもなにも反応がありません しかもコントロールパネルにjavaがありませんでした...前はありました。 多分自分が間違えてアンインストールしてしまったのではないかと思っています javaがないと絵チャットや色々なものができなくなっててめちゃくちゃ困ってます><助けてください 私のPCはWindowsXPです

    • ベストアンサー
    • Java
  • またjavaの事です

    javaをDLしたのですが実行を押しても何も反応がありません セットアップ画面が出てきません ついにPCの故障でしょうか OSWindowsXP

  • javaを2・3回起動させると真っ白に。

    yahooゲームでjavaの画面を立ち上げ閉じ、立ち上げ閉じを2・3回すると真っ白いウインドウが出るだけで、カーソルが砂時計になり、そのウインドウ上ではマウスなどの操作は受け付けてくれません。 yahooゲームをしたいときは、そのたびに自分で再起動を繰り返さなくてはいけません。 どうしたらJAVAが、再起動しなくても、何度も立ち上がってくれるのでしょうか? ご教授よろしくお願いいたします。 OSはXPproで、CPUはアスロン3000、メモリは1G、ビデオカードはAopenのTI4200s 8X(550MHZ)です。

  • Javaのエラーなのですが

    import java.awt.*; import java.awt.event.*; class PrefFrame extends Frame { public PrefFrame(String title) { //フレームのタイトル setTitle(title); //ウィンドウを閉じる時 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); } } public class PrefTest { public static void main(String args[]) { PrefFrame frm = new PrefFrame("都道府県マスター"); frm.setLocation(300, 200); frm.setSize(250, 350); frm.setBackground(Color.LIGHT_GRAY); frm.setVisible(true); } } と入力しました。コンパイルは出来て、CLASSファイルは作成できたのですが、実行できずにエラーException in thread "main" java.lang.NoClassDefFoundError: PrefTest/javaとなってしまいます。実行するためにはどうしたらよいのでしょうか?

  • java applet

    java appletで、アプレット画面上でマウスをクリックすると新しいアプレット画面を開くためにはどうすればいいですか? ボタンを使用して新しいアプレット画面を開く方法は分かるのですがボタンを使用しないでやりたいのです。

  • windows8 でjavaが動かなくなった

    よろしくお願い致します。 dynabook t552/36grsについて質問です。 windows 8が入っています。 正確にいつかわからないのですが、この一週間くらいの間にjavaが使えなくなりました。 一週間くらい前までは、問題なく使えていたのですが、使えなくなりました。 最初は一つのサイトの不具合かと思っていたのですが、それが複数重なり、 よく考えてみると、javaを使っているサイトと気づきました。 その画面を開くためにクリックすると、javaのロゴはでてきますが、その後、 なにもなかったようにそのロゴが消えて、元の画面に戻ります。 思い当たる原因としては、そのころjavaをアップデートするかというメッセージが でていたような気がします。 それを何気なく時間があるときにクリックしてしまったのかもしれません。 これに気づく前にどこかのサイトで、javaの最新版では、 不具合があるため、アップデートしないように、というメッセージが書かれていたことも思い出しました。 そこで質問なのですが、どうすれば、もう一度javaを使えるようになるでしょうか。 もしもアップデートしてしまっていたら、もとにもどすことはできますか。 お手数ですが、よろしくお願い致します。

  • javaを使ったゲームで遊べない。原因は?

    こんにちは。 僕はとあるjavaを使ったゲームで遊んでいます。 数日前、いつも通りそのゲームで遊ぼうとしたら画面の上に横長に、 「このページは、表示するのにjava(TM)が必要なコンテンツがあります。」 という表示が出て、隣には「プラグインのインストール」と「インストールに関するヘルプ」がありました。 そして、遊ぶゲームの画面には「このコンテンツを表示するには、java(TM)が必要です」と表示されていて遊べません。 ゲームのやり方は知っていてもこういう事は全く分からないので、 「インストールに関するヘルプ」をクリックした先にあった手順を参考にして進めていきました。 どんなふうにやっていったかと言うと、「プラグインのインストール」をクリックして、 出てきたページに「デスクトップ・コンピュータ用のJavaを今すぐダウンロード。Version 7 Update 9」 と書いてあってそこをクリックし、表示された画面がまず、インストール画面、 そのあとに自動的にダウンロード画面になって、自動的に終了しました。 終わったのでさっそく遊ぼうとしたところ、また同じ表示が出て遊べませんでした。 なぜなのか、全く分かりません。 同じ手順で何度か試しましたが同じ表示だ出るだけでまったく遊べません。 考えられる原因はなんでしょうか。 また、どうすれば使えますか。 本当に困っております。 お願いします。

  • JAVAコンソールって何ですか?

    画面の右下に、見覚えのない小さいアイコンがあったので、 クリックしたところ新しいウィンドウが開いて、 JAVAコンソールって書いてあります。 これって、何なのでしょうか? 消去、コピー、閉じるってあるのですが、 これはどれを押せばいいのですか?

  • java アプリケーションをjava アプレットに

    java超初学者です。詳しいかたご教授願います。 java アプリケーションをjava アプレットに書き換えたいのですが、具体的にはどう書き換えを行ったらいいのか修正をお願いします。 (文字制限があるので、14個あるクラスファイルの中で(内1つはhtmlファイル)、メインメソッドを持つ実行クラスだけのせています。) Appletを継承させる、属性をメインクラスとコンストラクタはpublic にする、 mainメソッドを削除し、initメソッドへ書き換える、サイズ指定は<applet>タグで指定する。等調べましたが 具体的にわかりません。特にコンストラクタとメインメソッドの部分のアプレットへの書き換えがわかりませんでした。 宜しくお願い致します。 //実行クラスです。 import java.awt.*; import java.awt.event.*; /** *ゲームクラス(ここから始まる)<p> *画面の作成 */ public class Game extends Frame { /** * メインクラス */ public static void main(String args[]) { //フレームの作成 new Game(); } /** * 引数なしのコンストラクタ */ Game() { //*** ウィンドウの初期化 //タイトル super("Shooting Game"); //クローズボタンによる終了処理の実装 addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent evt) { System.exit(0); } }); setSize(500, 500); //ウィンドウのサイズ //*** キャンバスの初期化 MyCanvas mc = new MyCanvas(); add(mc); //フレームにキャンバスを追加 setVisible(true); //ウィンドウの表示 //ゲームデータの初期化 mc.init(); //スレッドを作成 mc.initThread(); } }

  • Windows7について

    私はWindows7を使っているのですがゲームする際キーボードを押しながらマウスをクリックしようとするとマウスのクリックが反応せずキーボードのみが反応しますなのでまともにゲームができませんこれの対処方法を教えてください

専門家に質問してみよう