ホームページ >Java >&#&チュートリアル >GUI 表示に一貫性がないのはなぜですか? 削除後にテーブルを更新するにはどうすればよいですか?

GUI 表示に一貫性がないのはなぜですか? 削除後にテーブルを更新するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-12 10:33:01420ブラウズ

Why is My GUI Display Inconsistent and How Can I Update the Table After Deletion?

AbstractTableModel GUI 表示の問題

AbstractTableModel を使用して GUI を作成するために提供されている Java コードには、表示と関連するいくつかの問題があります。 2 番目の GUI ウィンドウ (Gui2 クラス) の機能。

最初の問題: 一貫性のない GUI の外観

Gui2 ウィンドウは 2 つの異なる方法で表示されると述べました。空のパネルと、テーブルとボタンのあるもう 1 つのパネルです。この一貫性のない動作は、通常、GUI コンポーネントの初期化または表示が正しくないことが原因で発生します。

Gui2 クラスのコンストラクターでは、パネルが作成され、レイアウトと制約が定義されますが、コンポーネント (テキスト フィールド、ボタン、テーブルなど)はパネルに追加されません。これを修正するには、add() メソッドを使用するか、コンポーネント タイプごとに特定のメソッドを呼び出してコンポーネントをパネルに追加する必要があります。

第 2 の問題: 削除後のテーブルの更新

「選択した行を削除」ボタンの ActionListener は削除クエリをトリガーし、成功メッセージを表示しますが、テーブルは削除を反映するように自動的に更新されません。この問題は、テーブル モデルの更新方法に関連しています。

データベースから行を削除する場合、基になるテーブル モデルを更新して、削除された行をデータ構造から削除する必要があります。 AbstractTableModel は、特にこの目的のために fireTableRowsDeleted() と呼ばれるメソッドを提供します。

この問題を解決するには、削除ボタンの ActionListener で削除が成功した後に、fireTableRowsDeleted() を呼び出す行を追加する必要があります。これにより、データが変更されたことが JTable に通知され、それに応じて表示が更新されます。

追加の考慮事項:

  • 取得には SwingWorker クラスが使用されます。バックグラウンドで ResultSet から行を取得し、大規模なデータセットの表示を最適化します。
  • JDBCModel 内にネストされた JDBCWorker クラスは、SwingWorker 内の行を処理し、publish() メソッドと process() メソッドを使用してテーブル モデルを更新します。 .
  • 行メタデータは、ResultSetMetaData を使用して抽出され、列の数と列名が決定されます。
  • getPreferredScrollableViewportSize() メソッドは、それを囲む JScrollPane のサイズをカスタマイズするためにオーバーライドされます。
  • SwingWorker の progress プロパティは、データ取得中の進行状況を表示するために使用されます。

以上がGUI 表示に一貫性がないのはなぜですか? 削除後にテーブルを更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。