Rumah  >  Artikel  >  Java  >  Gunakan model benang JavaFX baharu dalam Java 13 untuk melaksanakan kemas kini tak segerak antara muka UI

Gunakan model benang JavaFX baharu dalam Java 13 untuk melaksanakan kemas kini tak segerak antara muka UI

WBOY
WBOYasal
2023-08-01 23:11:281094semak imbas

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.

  1. Pengenalan kepada model benang JavaFX baharu
    JavaFX 13 memperkenalkan benang Fiber (Benang Gentian) sebagai benang pemaparan antara muka UI. Berbanding dengan utas aplikasi JavaFX sebelumnya, utas Fiber menggunakan gentian untuk melaksanakan penukaran tugas dan pelaksanaan. Fiber ialah proses pelaksanaan ringan yang boleh mengurus dan menukar tugas dengan berkesan serta meningkatkan prestasi serentak.
  2. Gunakan model utas JavaFX untuk kemas kini tak segerak antara muka UI
    Di bawah kami menggunakan program contoh untuk menunjukkan cara menggunakan model utas JavaFX untuk melaksanakan kemas kini tak segerak antara muka UI.
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn