2016-08-11 11 views
0

私は、.txtファイルまたはWebページから単語を数える小さなプロジェクトを行っています。 しているうちに、問題があります。スイングで別のGUIウィンドウからイベントを処理する方法

GUIウインドウAがあり、B

Aは、ローカルまたはWebページ内の.txtファイルを対象に行います。 Bは、ターゲットからの印刷テキストを実行し、ユーザがテキストから単語のカウントを開始するかどうかのオプションを指定します。

したがって、ユーザがBのボタンの単語カウントをクリックすると、 Aの各単語を数えます。ユーザがボタンの単語数をクリックするとすぐにBからMap<String word, Integer frequency>を取得して、単語を表示し、単語ごとに頻度を表示します。

問題は私ですAのBのイベントを処理する方法を考えてください。 私が考えた方法の1つは、メンバーとしてA、Bのクラスを作成することです...しかし、私は進めることができません...

p.s.私は韓国の初心者プログラマーです。だから、私の貧しい英語のスキルを理解してください。

+0

「A」と「B」は異なるアプリケーションですか、同じアプリケーションのUIの異なるウィンドウ/部分ですか? – fabian

+0

AとBは同じアプリケーションの異なるウィンドウです。 – TrailblazerChoong

答えて

0

もしAとBが2つの別々のGUIアプリケーションであるならば、2つの別々のプロセスが走っていることを意味します。あなたがここで必要とするのは、 "プロセス間の"コミュニケーションです。

アプリケーションAから、ファイルシステムにデータを書き続けることができます。 アプリケーションBからは、ファイルシステムからデータを読み込んで使用します。

EDIT -

コメントを見て、私はあなたが複数のスレッドでモデルオブジェクトを共有する必要があるということであることを示唆することができます。

class ModelObject{ 
    //This should hold your data in final fields. Make it immutable. 
} 

// You can make it singleton. 
     Class SharedService{ 
Private volatile ModelObject model ; 
    Public void write(ModelObject model); 
    Public ModelObject read(); 
} 

アプリケーションAはSharedServiceを使用してデータを書き込み、クラスModelObjectにデータをカプセル化します。 アプリケーションBはSharedService.getインターフェイスを使用してデータを読み取ります。

+0

ファイルを書き込むよりも、通信する方が良い方法があります。http://stackoverflow.com/a/10942526/2991525を参照してください。さらにOPは、実際には同じアプリケーションの2つの異なるウィンドウ間の通信についてのコメントで明らかになりました。 – fabian

+0

あなたは2つのメインスレッドの実行を意味する?私は 'いいえ'と言うだろう。 1つのメインスレッドがあります。具体的には、JFrame A(上記のGUIアプリケーションAと同じです)では、JFrame Bオブジェクトを作成します。 – TrailblazerChoong

+0

その場合、複数のスレッドでオブジェクトを共有する必要があります。 – Gunwant

関連する問題