• ベストアンサー

別クラスのリスナを感知(?)するには?

mrt136の回答

  • ベストアンサー
  • mrt136
  • ベストアンサー率35% (33/92)
回答No.3

java.util.EventListener を継承した自作のリスナーのインタフェースを実装すれば、独自のリスナーが作成できると思います。 調べてみられてはどうですか?

hameggs
質問者

お礼

なるほど・・・自作のリスナーですか。大変おもしろそうです^^ さっそく、調べてみます。 アドバイスありがとうございますm(__)m

関連するQ&A

  • リスナについて

    Java を勉強している者です GUIライブラリである awt,swing のリスナについての質問です awt,swing では リスナというイベント処理用のクラスと処理内容を用意して その部品に、イベント用のリスナを登録することによって、コールバックする仕組みになっていると思います。 リスナとイベントの対応ですが、マウスリスナやキーリスナ、ボタンを押したときに対応するアクションリスナ などがありますが、多用する再描画に関しての paintListener がありません 再描画に対応する場合、常に部品を継承して、paintcomponent をオーバーライドして記述しなければなりません 再描画も重要なイベントだと思うのですがなぜリスナが用意されてないのか。 JFrame j = new JFrame(); j.addPaintListener( new PaintAdapter { void onPaint() { ... } } のように描画処理を後付できないかという質問です。 できるようならサンプルのコードを教えてください。 またpaintリスナが用意されない理由があればこれも教えていただけると幸いです。

    • ベストアンサー
    • Java
  • ActionListener について

    Swingを用いて、メインのフレーム内に カレンダー(それぞれの日にちをボタンで)を作り、 ある日のボタンが押されると、メモを入力するための フレームを新たに作成。(それぞれ別のクラス) 見たいな事をしたいのです。 カレンダーは public class Calendar extends JInternalFrame implements ActionListener{.....} メモは public class Memo extends JInternalFrame implements ActionListener{....} メインは public class Main extends JFrame{  JDesktopPane main;  Calendar cal;  Memo memo;  .... } てなぐわいに。 で、Cal で ActionEvent を受け取ったら メモ入力用のフレーム memo を main に作成するメソッドを class Main に作りたい。のです。 どうしたらよいでしょうか? 言いたい事が、伝わったでしょうか? 『断固このやり方は、オススメできん!!』 『他の方法があるよ~。』 などあれば、それも教えて頂けると光栄です。 どんなことでも構いませんので、 この無知野郎に『知』をド・ド・ドンッ!!と与えてください。 頭ん中スカッスカですもの。スッカス…カ…ですもの…。

    • ベストアンサー
    • Java
  • イベントとリスナーに関すること

     Javaの初心者です。AWTについてご質問します。 処理をしたい手順として (1) したい処理の手順の選択(Aの処理か、Bの処理か、のように)をRadio Button で選択し (2) データの入力(Aの処理に対するデータ、Bの処理に対するデータ、の入力)を行い (3) それぞれの処理の実行と結果の表示、これをButton で促す。 の手順でプログラムを行いたいのです。((1)と(2)を逆にすれば実行できることは確認しましたが、何とか自然な形でということで上記の手順で行いたいのです。)  私の作ったプログラムではリスナーの中から内部クラスで定義された別のリスナーを呼び出すという形になってしまいます。これではだめらしいのです。呼び出し側で、その内部クラスの生成を行った後、実行のためのメソッドにはenableを使ってしまいました。どのメソッドを添えたらよいのかわからなくて苦し紛れに使いました。 内部クラスの初期設定の部分までは実行されているのですが、イベントハンドラであるactionPerformedの中で書かれた命令は実行されていません。 AWTに堪能な方、お時間を煩わせて申し訳ありませんが、お教えくださいますようお願い申し上げます。

    • ベストアンサー
    • Java
  • c++,ある関数のクラスから別のクラスの関数を呼ぶ

    c++で、あるクラスのメンバ関数から、別のクラスのメンバ関すを呼びたいのですが、どのようにしたらできますか? 例えば、以下のような単純なコードを考えています。やりたいことは、Aのメンバ関数であるaaa()からBのクラスであるbbb()を呼びたいと思っています。その理由を少し説明します。ここでは、Aというクラスとmain関数はオープンソースコードを例えています。できるだけ、元のオープンソースコードを書き換えずに新たな機能を拡張したいと思っています。そこで、Bというクラスを使って、元のオープンソースコードに機能を拡張しようとしています。このような理由なので、bbb()という関数はaaa()という関数から呼びたいです。メイン関数には何も書き加えないのがベストです。 現状では、実行すると「this is aaa」という出力しか出ません。ここに「this is bbb」の出力を加えたいです。クラスAとBにある程度コマンドを追加して、解決できないでしょうか。 #include <iostream> using namespace std; //------------------------------------------------------ class A{ public: void aaa(); virtual void bbb(){} }; //------------------------------------------------------ //------------------------------------------------------ class B : public A{ public: void bbb(); }; //------------------------------------------------------ //------------------------------------------------------ void A::aaa() { cout << "this is aaa \n"; bbb(); } //------------------------------------------------------ //------------------------------------------------------ void B::bbb() { cout << "this is bbb \n"; } //------------------------------------------------------ //------------------------------------------------------ int main() { A a; a.aaa(); return 0; } //------------------------------------------------------

  • リスナーを別クラスで書いた時のエラーの意味と原因?

       今晩は。  参考書を見ながら、リスナーを別クラスで書いてみました。  maクラスのコンストラクタを「public void ma」にすると「maのコンストラクタが未定義」 ですというエラーが出ます。  これはどのような意味でしょうか、よろしくお願いします。 ================================================================================= public class applet extends Applet { String s = "Hello" ; public void init() { addMouseListener(new ma(this)); } public void paint(Graphics g) { g.drawString( s , 60 , 60 ) ; } } class ma extends MouseAdapter { applet a ; public /*void*/ ma(applet ap) { a = ap ; } public void mouseClicked(MouseEvent e) { a.s = "JAVA" ; a.repaint() ; } }

    • ベストアンサー
    • Java
  • リスナーが起動しているのに「ORA-12541 : TNS: リスナーがありません」と怒られる

    同じ LAN 内にサーバーが3つあります。 すべて別々のデータベースが入っている DB サーバーです。 サーバーの状態は、順番に以下の通りとなっています。 A:DB サーバー(参照されるサーバー) B:A に対して接続可能。 C:A に対して接続できない。 B → A、C → A に対して DBLink を貼っているのですが、 B → A だけが成功し、C → A が失敗します。 失敗のエラー内容が、上記の「リスナーがありません」というエラーなのですが、 B → A の接続が成功しているのでリスナーは存在して正常に動作しているはずです。 A に対する接続情報(tnsnames.ora)は、B も C もまったく同じです。 A 側のリスナーのポートも同じで、同じユーザー/パスで接続テストをしています。 自分はサブシステム担当なので A サーバーの設定情報を見ることはできないのですが、 考えられるのは A 側で参照を許可する制御をしているくらいです。 でも、A 側で「B からの参照は許可するが C の参照は不可」と言った制御はできるものでしょうか? もしくは、ほかに考えられる原因はありますでしょうか? お手数ですが、よろしくお願いします。

  • 登録済みイベントリスナーの情報を取得したい

    子画面に別機能をロードするようなページを作成しており、その子画面がオンロードで登録したイベントリスナーをクローズの際に削除するような仕組みにしています。 この処理を行う際、登録済みのリスナー情報を取得できる方法があれば知りたいのですが、方法がわかりません。 (無ければ無いで、管理マネージャーのような仕組みを作成しようと思っています。) よろしくお願いします。

  • [Servlet]別プロジェクトへの処理移譲

    お世話になります。 SAStrutsを勉強しながらシステムを構築しております。 ご質問なのですが、 別プロジェクトへの処理移譲は可能でしょうか。 例えば、下記pj-aのHelloworldActionクラスにアクセスし、 判定結果によっては、別プロジェクトpj-bのTodoActionへ処理を移譲する。 稚拙な質問で申し訳ありませんが、宜しくお願い致します。 pj-a/ │ ├src/main/java │ └tutorial.action │ ├ HelloworldAction.java pj-b/ │ ├src/main/java │ └todo.action │ ├ TodoAction.java

  • イベントリスナのコールバックメソッドは何故一つ?

    Android(JAVA)のイベントリスナについて教えてください >イベントリスナは、ひとつのコールバックメソッドを持つ View クラスのインターフェイスです。それらのメソッドは、リスナが登録されたビューでユーザがUI のアイテムにアクションを起こしたことがトリガとなり Android フレームワークにより呼び出されます ▽6.5 UIイベントハンドリング - ソフトウェア技術ドキュメントを勝手に翻訳   https://sites.google.com/a/techdoctranslator.com/jp/android/guide/ui/ui-events ・なぜ、コールバックメソッドをひとつしか持たないのでしょうか? ・複数持ってはいけないのでしょうか? ・インターフェイスだから? ・言語機能として複数保持出来ないことはないけれども、イベントリスナ的に分かりやすくするため(?)、敢えて機能毎に分けているのでしょうか? ■質問背景 ・ドキュメント見てたらそうなってたので、なんでかな? と思い質問しました ・複数インターフェイスにそれぞれ唯一の抽象メソッドを持たせず、1つのインターフェイスに複数の抽象メソッドを持たせたほうが分かりやすいような気もするのですが… 「View.AllListener」に「onClick()」「onLongClick()」みたいなのは何故ダメなのでしょうか?

    • ベストアンサー
    • Java
  • 別のクラスのインスタンスの作り方

    現在、javaからrubyに移行するために勉強しているのですが、別のファイルに定義したクラスのインスタンスが作成できなくて、困っています。 具体例をあげると require './B' class A end def initialize b = new B end end --別のファイル class B def initialize p 'hello' end  public : initalize end こんな2つのファイルがあったとして、Aのインスタンスを作成すると、 undefined method `B’ というエラーがでます。 私としてはこのエラーの原因がinitializeがデフォルトでprivate宣言なのが原因だと考えているのですが、publicと指定してもエラーとなることから、いくつか疑問が湧いたので質問させていただきます。 1、そもそもBクラスのインスタンスが作成できないのはinitializeがデフォルトでprivate宣言なのが原因なのか? 2、1があっていたと仮定するとBクラスのinitializeをpublic指定しているのになぜ呼び出せないのか? 3、rubyはなぜデフォルトでinitializeがprivateなのか?(javaではコンストラクタをprivateにするということは普通はしない。使うときはシングルトンやUtilのようなクラスを作るときに限る) 以上です。よろしくお願いします。

    • ベストアンサー
    • Ruby