• ベストアンサー

Java初心者です。

AnonymousPotatoの回答

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

FOCUS_LOST時のリスナ仕込んでおくのはどうでしょうか。 これで要件を満たせるかどうか分かりませんが。 というのは、これだと一度フォーカスを失うとそれきりなので。

truque
質問者

お礼

ありがとうございます! コンポーネントを用意することになってしまいましたが、できました! 確かに、一度フォーカスを失うとそれきりですね。 ちょっと工夫して、フォーカスを再度失えるようにしました。 動作スピードは遅いですけど、自分が満足できるレベルのものにはなりました。 以下のようにしました。 import java.awt.AWTException; import java.awt.Container; import java.awt.MouseInfo; import java.awt.Point; import java.awt.PointerInfo; import java.awt.Robot; import java.awt.event.FocusListener; import java.awt.event.FocusEvent; import java.awt.event.InputEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; public class FocusListenerTest02 { public static void main( String[] args ) { JFrame jFrame = new JFrame( "フォーカスロストによるマウスポジションゲット" ); jFrame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); jFrame.setBounds( 0, 0, 100, 100); JPanel jPanel = new JPanel(); JTextField jTextField02 = new JTextField( "" ); jTextField02.addFocusListener( new Listner02( "" ) ); jPanel.add( jTextField02 ); Container container = jFrame.getContentPane(); container.add( jPanel ); jFrame.setVisible( true ); } } class Listner02 implements FocusListener { private String name = ""; public Listner02( String name ) { this.name = name; } public void focusGained( FocusEvent e ) { System.out.println( "focusGained() : " + name ); } public void focusLost(FocusEvent e) { System.out.println( "focusLost() : " + name ); PointerInfo a = MouseInfo.getPointerInfo(); Point b = a.getLocation(); int x = (int) b.getX(); System.out.println(x + ":" + y); try { Thread.sleep(1000); } catch (InterruptedException ie) { ie.printStackTrace(); } try { Robot robot02 = new Robot(); robot02.mouseMove(50, 50); robot02.mousePress(InputEvent.BUTTON1_MASK);// 左クリック robot02.mouseRelease(InputEvent.BUTTON1_MASK);// クリック離す robot02.mousePress(InputEvent.BUTTON1_MASK);// 左クリック robot02.mouseRelease(InputEvent.BUTTON1_MASK);// クリック離す robot02.mouseMove(x, y); } catch (AWTException e1) { e1.printStackTrace(); } } }

関連するQ&A

  • Javaてなに?

    インターネット初心者です。デスクトップに、頻繁に「Java アップデート準備完了」のメッセージがでます。説明画面を見てもさっぱりわかりません。以前警告文などを見て、訳わからずクリックして、ウイルスのため使えなくなったことがあります。このJavaというのは、アップデートしてもよいのでしょうか?

  • JAVA初心者で申し訳ございません。

    JAVA初心者で申し訳ございません。 クライアントとサーバにそれぞれJAVAプログラムがあるとします。 (1)クライアントのJAVAプログラムである情報を取得し、 (2)その情報をサーバにあるJAVAプログラムに渡して (3)サーバのJAVAプログラムでその情報を処理したい(ログ出力など)。 (2)の方法は、どのようなものがあるのでしょうか? 初心者なので簡単な方法を教えていただけないでしょうか? (セキュリティとか気にしないでよいです。) サーバ側にHTTPサーバをたててHTTP通信する方法なんかもあるのでしょうか?

    • ベストアンサー
    • Java
  • JAVA初心者です。JAVAで音を鳴らすプログラム

    JAVA初心者です。JAVAでボタンを作り、ボタンをクリックすると音が鳴るというプログラムを作りたいのですが、宣言とか処理とかをどうやって書けば良いのかわかりません…。アドバイスお願いします。

    • ベストアンサー
    • Java
  • Java初心者は何から作るべきか

    こんにちは 私は最近SEとして働き始めたものです。 文系大学出身ということもあり、当初「プログラム?Java?なにそれ、おいしいの?」というレベルでしたが、勉強してなんとかSJC-P資格取得するとこまではこぎつけました。 しかし、これまで机上の勉強ばかりで、アプリケーション製造などを行ったことはないので、自分でいろいろプログラムを作って体でJavaを覚えていきたいと考えています。 そこで、お聞きしたいのですがJavaで初心者がつくるアプリケーションといえばどんなものがあるでしょうか? できれば、具体的に「こんなものを作ってみよう!」というような書籍やサイトを紹介して頂けると助かります。Javaの構文についての書籍はたくさん見つかるのですが、具体的に掲示板を作ってみようとかチャットを作ってみようとか、そういった書籍が見当たらないので困っています。 よろしくお願いいたします。

  • java超初心者です。

    はじめまして。表題のとおりjava初心者です。 画像をクリックして拡大させる方法をjavaで初挑戦しました。 無事に成功しましたが、同じページにもう一つ追加したところ 拡大した画像(大)は表示されていますが元の画像(小)は画像が表示されず×になってしまいます。 使用している画像には問題はありません(imgだけで表示されるかテスト済み) 使用したjavaは下記のとおりです。 --------------------------------------------------- <a href="javascript:void(0)" onClick=" window.open('img/ファイル名.jpg', '_blank', 'width=353,height=400,scrollbars=no,toolbar=no,menubar=no,directories=no,location=no'); "><img src="ファイル名.jpg" width="482" height="330" border="0"></a> --------------------------------------------------- ファイル名を変えただけで表示できない理由が分からず困っています。 同ページにふたつは使用できないのでしょうか? 本当に初心者で始めて挑戦したので、質問内容に説明不足があるかと思いますが 原因がわかり簡単な対処方法を教えて下さると助かります。 よろしくお願いします。

  • Java初心者ですが・・・

    Java初心者ですが・・・ こんにちは、さっそくですが質問させていただきます 以下のようなコードがあるとき、特定のキーを押したときに、 表示されている文字列を消去するには、どのようにすればよいのでしょうか 特定のキーコードのときに、str1に、"" を代入するだけではだめなのでしょうか お手数ですがよろしくお願いします import java.applet.Applet; import java.awt.*; import java.awt.event.*; public class App25_2 extends Applet { char ch; FontMetrics fo; String st1 ="", st2; public void init() { setBackground(new Color(190,190,210)); setFont(new Font("Serif", Font.BOLD, 30)); fo = getFontMetrics(getFont()); addKeyListener(new KeyAdapter() { public void keyTyped(KeyEvent e) { ch = e.getKeyChar(); st2 = String.valueOf(ch); st1 += st2; repaint(); } } ); } public void paint(Graphics g) { Dimension dim = getSize(); g.setColor(Color.red); ; int stwidth = fo.stringWidth(st1); g.drawString(st1, (dim.width/2) - stwidth/2, dim.height/2 ); } }

    • ベストアンサー
    • Java
  • LinuxでJava環境

    LinuxでJavaを使った開発をしたいのですが、環境設定でつまずいてしまい 、困っております。 環境 OS:windowsとUbuntuのデュアルブートです。 状況 javaを、 sudo update-alternatives --config java でインストールしましたが、コンパイルができません。 ファイルはデスクトップに置き、java ****.javaで実行しましたが、 Exception in thread "main" java.lang.NoClassDefFoundError: test/java/java Caused by: java.lang.ClassNotFoundException: test.java.java at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276) at java.lang.ClassLoader.loadClass(ClassLoader.java:251) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) のエラーが出てしまいます. また、eclipseをインストールして、画面を開こうとしても、すぐに消えてしまいます. Linuxの挙動がまったくわかりません。 もしかすると、rootでアレコレコマンドを試したから,再起不能の状態になっているのではないかと危惧しております。 Linuxの知識はゼロの初心者です。 そうかお助けをお願い致します。

  • Javaで簡単なピアノ演奏プログラム

    Javaで簡単なピアノを演奏するプログラムを作成しています。 初心者なので、色々経験を積んでいく最中です。 他にも、ブロック崩しも並行で作成中なんですが、Javaでピアノ演奏のアプリケーションも おもしろそうだと思ったので、この期に作ろうと思いました。 それで、フレームの表示(フレームを経由してキーボードの情報を受けてます)と、キーリスナーの 実装、サウンド用のAudioClipの変数も用意しました(多数入れるので、配列の形で用意してます) その後、AudioClipの変数の中に、wavファイルを指定して、ここで一旦実行結果を確認しようと思いコンパイラしたのですが、フレームの表示はOK、キーの入力もOKだったんですが、なぜか音が出なかく、代わりにエラーが出ました。 そのエラーの内容が下記です。 ================================== Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at Sound.keyPressed(Sound.java:26) at java.awt.Component.processKeyEvent(Component.java:6247) at java.awt.Component.processEvent(Component.java:6066) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Window.processEvent(Window.java:1836) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.ja va:1850) at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboard FocusManager.java:712) at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeybo ardFocusManager.java:990) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeybo ardFocusManager.java:855) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFoc usManager.java:676) at java.awt.Component.dispatchEventImpl(Component.java:4524) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo ntrolContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo ntrolContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessCo ntrolContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre ad.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread. java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre ad.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) ================================== 以上が、出力されたエラーの内容です。 Javaのファイル名は、Mainframe(メインファイル)、Soundファイルです。 今度文化祭の方で出展しようかと思っているんですが、時間が無いためちょっと焦ってます。 恐らく、いくつか必要な情報が抜けてるかと思いますが、指摘を頂ければその都度記載させて頂きます。乱文で申し訳ございませんが、ご教授の方宜しくお願い致します。

    • ベストアンサー
    • Java
  • Java2SDKをインストールできません...

    勉強のため自宅のデスクトップでJava開発環境を整えたいのですが、Java2SDKをインストールすると、 「Java(TM)が起動中です。アプリケーションを閉じてください。」 とエラーが出てインストールが完全に終了しません。 アプリケーションをすべて閉じて再試行しても変わりませんでした。 PCのspecは以下です。 WindowsXP SP2 Core2Duo 2GRAM HDD1TB どうしたらよいか困っております。どなたかご教授いただければと存じます。

    • ベストアンサー
    • Java
  • 動画の座標値をマウスクリックで得ることができますか?

    Java初心者です。 マウスのイベント処理(X,Y座標を得る)と動画(ネットワークカメラの動画)をうまく組み合わせて、その動画の座標値を得る方法を教えてください。とりあえず静止画の座標値を得る方法でも結構です。 Javaに詳しい方、是非ご教授お願い致しますm(__)m

    • ベストアンサー
    • Java