Menggunakan Thread untuk Melaksanakan Permintaan Pangkalan Data
Dalam JavaFX, adalah penting untuk mematuhi peraturan threading khusus untuk memastikan responsif dan konsistensi UI. Ini melibatkan pelaksanaan tugas yang sudah lama berjalan, seperti permintaan pangkalan data, pada urutan latar belakang dan mengemas kini UI pada urutan aplikasi JavaFX.
Peraturan Threading:
Isu PengecualianNegeri Tidak Sah:
IllegalStateException yang anda temui adalah kerana anda cuba mengemas kini label courseCodeLbl daripada urutan latar belakang, melanggar Peraturan 1.
Pelaksanaan Betul:
Untuk melaksanakan penjalinan dengan betul, ikut langkah berikut:
Menggunakan API javafx.concurrent:
JavaFX menyediakan API javafx.concurrent untuk memudahkan pengaturcaraan serentak dan pengurusan UI. Kelas Tugas adalah pusat kepada API ini, menyediakan mekanisme untuk pemprosesan latar belakang dan mengemas kini UI.
Kod Contoh:
Berikut ialah contoh kelas Pengawal yang menunjukkan yang betul penggunaan threading dan kelas Tugas:
import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; public class Controller { @FXML private Button getCourseBtn; @FXML private TextField courseId; @FXML private Label courseCodeLbl; private ModelController mController; public void getCourseNameOnClick() { Task<String> courseTask = new Task<>() { @Override protected String call() { String courseName = ""; Course c = new Course(); c.setCCode(Integer.valueOf(courseId.getText())); mController = new ModelController(c); try { ResultSet rs = mController.getResult(); if (rs.next()) { courseName = rs.getString(1); } } catch (Exception e) { throw new RuntimeException(e); } return courseName; } }; courseTask.setOnSucceeded(e -> Platform.runLater(() -> courseCodeLbl.setText(courseTask.getValue()))); new Thread(courseTask).start(); } }
Kod ini merangkumi permintaan pangkalan data dalam Tugasan, yang mengendalikan menjalankan pertanyaan dan mengemas kini UI pada utas aplikasi JavaFX. Dengan mematuhi peraturan penjalinan JavaFX dan menggunakan API, anda boleh melaksanakan permintaan pangkalan data dengan cekap sambil mengekalkan responsif UI.
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan `IllegalStateException` Apabila Menggunakan Thread untuk Permintaan Pangkalan Data dalam JavaFX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!