ホームページ > Java > &#&チュートリアル > Java で行削除後に GUI のパフォーマンスを向上させ、テーブルを自動更新する方法

Java で行削除後に GUI のパフォーマンスを向上させ、テーブルを自動更新する方法

Susan Sarandon
リリース: 2024-11-19 12:37:02
オリジナル
695 人が閲覧しました

How to Improve GUI Performance and Auto-Update Table After Row Deletion in Java?

AbstractTableModel GUI 表示の問題

この例の GUI の問題は、データベースへの非同期アクセスに関連しているようで、不整合が発生する可能性があります。テーブルディスプレイで。これを解決するには、イベント ディスパッチ スレッドのブロックを避けるために、バックグラウンドで ResultSet を取得する必要があります。データをチャンクでパブリッシュし、テーブル モデルに段階的に追加して、より流動的な表示を提供できます。

ここでは、SwingWorker を使用してバックグラウンドで結果を取得して処理するコードの修正バージョンを示します。

public class Gui2 extends JFrame {
    // ...

    public Gui2(Connection conn) {
        // ...

        SwingWorker<List<Row>, Integer> worker = new SwingWorker<List<Row>, Integer>() {
            @Override
            protected List<Row> doInBackground() throws Exception {
                try {
                    while (rs.next()) {
                        Row row = new Row();
                        row.ID = rs.getInt(1);
                        row.name = rs.getString(2);
                        publish(row);
                    }
                } catch (SQLException e) {
                    e.printStackTrace(System.err);
                }
                return null;
            }

            @Override
            protected void process(List<Row> chunks) {
                int n = getRowCount();
                for (Row row : chunks) {
                    tableData.add(row);
                }
                fireTableRowsInserted(n, n + chunks.size());
            }
        };
        worker.execute();
        
        // ...
    }
}
ログイン後にコピー

ワーカーはバックグラウンドで行を取得し、チャンクで公開します。 process() メソッドは、TableModel に行を追加し、テーブル表示を段階的に更新します。

行削除後の自動テーブル更新

行が削除される場合、削除操作は GUI ではなく TableModel で実行する必要があります。 TableModel には、基になるデータから行を削除し、テーブル行削除イベントを起動してテーブル コンポーネントに変更を通知する delete() メソッドが必要です。 delete() メソッドの修正版は次のとおりです。

public class TableModel extends AbstractTableModel {
    // ...

    public void delete(int rowIndex) {
        // ...
        try {
            PreparedStatement pre = conn.prepareStatement(query);

            pre.executeUpdate();

            // Remove the row from the data
            tableData.remove(rowIndex);

            // Fire table rows deleted event
            fireTableRowsDeleted(rowIndex, rowIndex);

            JOptionPane.showMessageDialog(null, "Row Deleted Successfully");
        } catch (Exception e1) {
            JOptionPane.showMessageDialog(null, e1.getMessage());
        }
    }
}
ログイン後にコピー

これらの修正により、行が削除された後にテーブルが自動的に更新され、よりユーザーフレンドリーで応答性の高いインターフェイスが提供されます。

以上がJava で行削除後に GUI のパフォーマンスを向上させ、テーブルを自動更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート