2010-11-22 5 views
0

まず、私がJavaを初めて使い慣れていることを知らせてください。私はさまざまな言語の熟練したプログラマーです。そのために私はつまらないのかもしれません。親JFrameの更新に関する問題

私は、おそらくデザインが悪いために、ユーザーのワークフローを通じて新しいJFramesを生成するアプリケーションを持っています。私の質問は、産卵したJFrameにイベントがある場合、データやイベントを親に連絡して渡すことができるかどうかです。

私は、JDialogを使ってデザインする方法があると読んでいますが、それはオプションではないとしましょう。基本的に、JFrame1にはデータのリストを含むJTableが含まれています。アクションによってJFrame2が生成され、ユーザーはJFrame1のリストのデータに影響を及ぼす「何か」を行います。 JFrame2を閉じると、JFrame2のcloseイベントに基づいてJTableを制御する方法はありますか?

これはかなり基本的な概念ですが、私はそのようなアクションを可能にするメカニズムを見つけることができないようです。

ありがとうございます!

答えて

0

「リスナー」を使用して、さまざまなイベントを待機することができます。

How to Write a Window Listenerから始めたいと思うかもしれません。

私はJDialogを使用してデザインする方法があると読んでいますが、それはオプションではないとしましょう。

なぜですか?コードはこの目的のために設計されたJDialogsと同じです。 JFrameを使用する必要があるという具体的な要件は何ですか?

アクションはJFrame2を生成し、ユーザーはJFrame1のリストのデータに影響を与える "何か"を行います。 JFrame2を閉じると、JFrame2のcloseイベントに基づいてJTableを制御する方法はありますか?

これは一般的な設計です。ユーザーが変更または更新する行を選択すると、変更できるようにすべてのデータを表示するモデルダイアログが作成されます。ダイアログが保存されると、テーブルのデータが更新されます。これがあなたの必要条件ならば、ダイアログにTableModelを渡すことができます。ダイアログが閉じるとTableModelが更新され、テーブルは自動的に再描画されます。

+0

「なぜですか?」という質問に対する回答:正直言って、この時点ではかなりの量の再調整が必要になります。私はもっ​​と時間があるときにそうすることを全然心配していませんが、能力があれば既存のデザインを使用するほうが好ましいでしょう。ご回答いただきありがとうございます。私は彼らのすべてが洞察力があると感じました。 – attach

0

ウィンドウリスナーを使用してウィンドウクロージングイベントをキャプチャする必要があります。ウィンドウリスナーは、変更が必要なデータへの参照も必要とします。

0

JFrameまたはJDialogでWindow.addWindowListener()を使用することに加えて、モデルビューアプローチを使用することを検討してください。 closeイベントでは、テーブル自体ではなく、テーブルのデータを変更してください。 AbstractTableModelを表のモデルとして使用し、データの変更をリッスンします。

関連する問題