2017-06-19 5 views
0

私はJFrameを使用してJavaプロジェクトを作成しています。フレームBの実行が終了したときにJTable(フレームA内)を「リフレッシュ」する方法は?

JTable(public class myTable extends JTable)を拡張するmyTable tblオブジェクトを含むJFrame Aclass mainPanel)を作成しました。 この拡張には、テーブルtblの値をDBから取得するパブリックメソッドが必要であるため、これを作成しました。 この表は、私がプロジェクトを立ち上げるたびに入力されます。

フレームAには、JButton(JButton b_partita)も含まれています。使用 このコンポーネント(b_partita)新しいJFrameのB(別の "class aggiungiPartita implements ActionListener")を起動します。

b_partita.addActionListener(new aggiungiPartita()); 

フレームBは私のデータベースを作成するために、本質的に使用されています。 いつもうまくいったら、Bsaveボタンを押すと、JFrameが自動的に閉じます。

質問です:

はすぐにBの活動の終了後に(A)でテーブルtblを「リフレッシュ」する方法はありますか?あなたは「保存」を押すと(私は仮定)を使用すると、基になるデータが変更されたことをテーブルに通知する必要があるデータベースに新しいデータを保存すると

は、 ステファノ

+1

モーダルダイアログを使用します。何らかのオブザーバパターンを使用する – MadProgrammer

+0

SwingWorkerを使用して、バックグラウンドでテーブルモデルを作成する[例:](https://stackoverflow.com/questions/42969696/dynamically-loading-large-data-in-jtable-using -swingworker/42970185#42970185)と[example](https://stackoverflow.com/questions/17414109/populate-jtable-with-large-number-ofrows/17415635#17415635) – MadProgrammer

答えて

0

をあなたのすべてをありがとうございます。

JTableを拡張時にデータベースからデータを入力するように説明されているようです。これはあなたがしたいことではありません。代わりに、要求されたときにデータを取得するメソッドを実装する独自のテーブルモデルを作成する必要があります。クラスのオブジェクトを作成し、それをJTableコンストラクタに渡します。あなたはめったにクラスJTableを拡張する必要はありません。これを行う方法の詳細については、Java Tutorialを参照してください。

テーブルモデルクラスがAbstractTableModelに拡張されることをお勧めします。これは、多くの作業を行うためです。これは、テーブル自体に更新する必要があることをテーブルに通知する世話をするfireTableDataChangedメソッド(詳細な例と同様に)を提供します。

抽象的なモデルを拡張せずに独自のモデルを実装する場合は、もう少し作業が必要です。適切に構成されたTableModelEventを使用して、すべてのテーブルモデルリスナーのtableChangedメソッドを呼び出す必要があります。

関連する問題