首頁 >Java >java教程 >從結果集中填入 JTable 時如何避免「IllegalStateException」?

從結果集中填入 JTable 時如何避免「IllegalStateException」?

Linda Hamilton
Linda Hamilton原創
2024-12-21 09:46:10498瀏覽

How to Avoid

如何從結果集中填充JTable

問題:

您遇到從填充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 替換為適合您的資料庫連線的值。

以上是從結果集中填入 JTable 時如何避免「IllegalStateException」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn