ホームページ > Java > &#&チュートリアル > ResultSet から JTable を設定するときに「IllegalStateException」を回避するにはどうすればよいですか?

ResultSet から JTable を設定するときに「IllegalStateException」を回避するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-21 09:46:10
オリジナル
453 人が閲覧しました

How to Avoid

ResultSet から JTable を設定する方法

問題:

が発生していますResultSet から JTable を設定し、「IllegalStateException」を受け取る問題エラー。

答え:

SwingWorker と try-with-resource ステートメントの使用:

コードを簡素化し、高度な機能を利用するには、SwingWorker と try-with-resource ステートメントの使用を検討してください。 SwingWorker を使用すると、GUI スレッドを妨げることなくバックグラウンド タスクを実行できます。 try-with-resources ステートメントは、リソースが適切に閉じられることを保証します。

次に例を示します:

import java.sql.*;
import javax.swing.*;
import javax.swing.table.*;

public class GUI extends JFrame {

    // ... (remaining GUI code)

    private void loadData() {
        LOG.info("START loadData method");

        button.setEnabled(false);

        try (Connection conn = DriverManager.getConnection(url, usr, pwd);
             Statement stmt = conn.createStatement()) {

            ResultSet rs = stmt.executeQuery("select * from customer");
            ResultSetMetaData metaData = rs.getMetaData();

            // Names of columns
            Vector<String> columnNames = new Vector<>();
            int columnCount = metaData.getColumnCount();
            for (int i = 1; i <= columnCount; i++) {
                columnNames.add(metaData.getColumnName(i));
            }

            // Data of the table
            Vector<Vector<Object>> data = new Vector<>();
            while (rs.next()) {
                Vector<Object> vector = new Vector<>();
                for (int i = 1; i <= columnCount; i++) {
                    vector.add(rs.getObject(i));
                }
                data.add(vector);
            }

            tableModel.setDataVector(data, columnNames);
        } catch (Exception e) {
            LOG.log(Level.SEVERE, "Exception in Load Data", e);
        }
        button.setEnabled(true);

        LOG.info("END loadData method");
    }

}
ログイン後にコピー

このコードは、SwingWorker を利用してバックグラウンドでデータの読み込みを実行します。また、try-with-resources ステートメントを活用して、接続とステートメントが適切に閉じられていることを確認します。

url、usr、および pwd をデータベース接続の適切な値に置き換えることを忘れないでください。

以上がResultSet から JTable を設定するときに「IllegalStateException」を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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