Cara Mengisi JTable daripada ResultSet
Masalah:
Anda sedang alami isu mengisi JTable daripada ResultSet dan menerima Ralat "IllegalStateException".
Jawapan:
Menggunakan SwingWorker dan Pernyataan cuba-dengan-sumber:
Untuk memudahkan kod dan menggunakan ciri lanjutan, pertimbangkan untuk menggunakan SwingWorker dan pernyataan cuba-dengan-sumber. SwingWorker membenarkan tugas latar belakang dilakukan tanpa mengganggu urutan GUI. Pernyataan cuba-dengan-sumber memastikan sumber ditutup dengan betul.
Berikut ialah contoh:
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"); } }
Kod ini menggunakan SwingWorker untuk melaksanakan pemuatan data di latar belakang. Ia juga memanfaatkan pernyataan cuba-dengan-sumber untuk memastikan sambungan dan pernyataan ditutup dengan betul.
Ingat untuk menggantikan url, usr dan pwd dengan nilai yang sesuai untuk sambungan pangkalan data anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan 'IllegalStateException' Apabila Mengisi JTable daripada ResultSet?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!