首页 > Java > java教程 > 从结果集中填充 JTable 时如何避免'IllegalStateException”?

从结果集中填充 JTable 时如何避免'IllegalStateException”?

Linda Hamilton
发布: 2024-12-21 09:46:10
原创
496 人浏览过

How to Avoid

如何从结果集中填充 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 替换为适合您的数据库连接的值。

以上是从结果集中填充 JTable 时如何避免'IllegalStateException”?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板