> Java > java지도 시간 > ResultSet에서 JTable을 채울 때 'IllegalStateException'을 방지하는 방법은 무엇입니까?

ResultSet에서 JTable을 채울 때 'IllegalStateException'을 방지하는 방법은 무엇입니까?

Linda Hamilton
풀어 주다: 2024-12-21 09:46:10
원래의
455명이 탐색했습니다.

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿