Gunakan model penjalinan JavaFX baharu dalam Java 13 untuk melaksanakan kemas kini tak segerak antara muka UI
Pengenalan:
Dalam pembangunan perisian, kelajuan tindak balas antara muka pengguna adalah sangat penting untuk pengalaman pengguna. Untuk memastikan kelancaran dan ketepatan masa antara muka, pembangun perlu menggunakan cara tak segerak untuk mengemas kini antara muka pengguna. Dalam versi sebelumnya, JavaFX menggunakan JavaFX Application Thread untuk mengemas kini antara muka UI, tetapi fenomena "UI suspended animation" cenderung berlaku dalam persekitaran serentak. Untuk menyelesaikan masalah ini, Java 13 memperkenalkan model benang JavaFX baharu.
import javafx.application.Application; import javafx.concurrent.Task; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class AsyncUIUpdateExample extends Application { private Label countLabel; @Override public void start(Stage primaryStage) { countLabel = new Label("0"); Button startButton = new Button("Start"); startButton.setOnAction(event -> startAsyncTask()); VBox root = new VBox(countLabel, startButton); Scene scene = new Scene(root, 200, 100); primaryStage.setTitle("Async UI Update Example"); primaryStage.setScene(scene); primaryStage.show(); } private void startAsyncTask() { Task<Void> task = new Task<Void>() { @Override protected Void call() throws Exception { // 模拟耗时的任务 for (int i = 0; i < 10; i++) { Thread.sleep(1000); int count = i + 1; // 使用Platform.runLater()方法来在JavaFX线程中更新UI界面 javafx.application.Platform.runLater(() -> { countLabel.setText(String.valueOf(count)); }); } return null; } }; new Thread(task).start(); } public static void main(String[] args) { launch(args); } }
Dalam contoh di atas, kami mencipta aplikasi JavaFX asas dengan Label untuk memaparkan kiraan dan butang untuk memulakan tugas tak segerak. Apabila butang diklik, objek Tugas baharu dicipta untuk mensimulasikan tugasan yang memakan masa dan kaedah Platform.runLater() digunakan untuk mengemas kini nilai kiraan antara muka UI dalam utas JavaFX. Dengan mengemas kini antara muka UI dalam utas JavaFX, kami boleh memastikan kelancaran antara muka UI dan mengelakkan fenomena "UI digantung animasi".
Kesimpulan:
Model penjalinan JavaFX baharu dalam Java 13 menyediakan cara yang lebih cekap dan boleh dipercayai untuk melaksanakan kemas kini tak segerak antara muka UI. Dengan menggunakan gentian untuk mengurus dan menukar tugas, pembangun boleh mengawal dan mengoptimumkan responsif antara muka mereka dengan lebih baik. Menggunakan kod dalam contoh di atas boleh membantu pembangun lebih memahami dan menggunakan model penjalinan JavaFX untuk melaksanakan kemas kini tak segerak antara muka UI.
Atas ialah kandungan terperinci Gunakan model benang JavaFX baharu dalam Java 13 untuk melaksanakan kemas kini tak segerak antara muka UI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!