Rumah >Java >javaTutorial >Bagaimana untuk melaksanakan antara muka grafik untuk komunikasi masa nyata menggunakan JavaFX dan WebSocket dalam Java 9

Bagaimana untuk melaksanakan antara muka grafik untuk komunikasi masa nyata menggunakan JavaFX dan WebSocket dalam Java 9

WBOY
WBOYasal
2023-07-30 16:57:231006semak imbas

Cara menggunakan JavaFX dan WebSocket untuk melaksanakan antara muka grafik untuk komunikasi masa nyata dalam Java 9

Pengenalan:
Dengan perkembangan Internet, keperluan untuk komunikasi masa nyata menjadi semakin biasa. Dalam Java 9, kita boleh menggunakan teknologi JavaFX dan WebSocket untuk melaksanakan aplikasi komunikasi masa nyata dengan antara muka grafik. Artikel ini akan memperkenalkan cara menggunakan teknologi JavaFX dan WebSocket untuk melaksanakan antara muka grafik untuk komunikasi masa nyata dalam Java 9, dan melampirkan contoh kod yang sepadan.

Bahagian Pertama: Asas JavaFX
Sebelum mula memperkenalkan cara menggunakan WebSocket untuk mencapai komunikasi masa nyata, mari kita fahami asas JavaFX dahulu. JavaFX ialah rangka kerja yang dilancarkan oleh Oracle untuk membangunkan antara muka grafik Ia menggunakan bahasa penerangan berasaskan XML FXML untuk menentukan reka letak antara muka.

Contoh Kod 1:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.stage.Stage;

public class JavaFXExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        Button btn = new Button("点击我");
        btn.setOnAction(e -> {
            System.out.println("Hello JavaFX");
        });

        Scene scene = new Scene(btn, 300, 200);

        primaryStage.setTitle("JavaFX示例");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Dalam kod di atas, kami telah mencipta tetingkap aplikasi JavaFX yang mudah dan menambah butang pada tetingkap. Apabila butang diklik, "Hello JavaFX" akan dikeluarkan ke konsol.

Bahagian 2: Asas WebSocket
WebSocket ialah protokol yang digunakan untuk mencapai komunikasi masa nyata, yang menyediakan fungsi komunikasi dua hala. Di Java, kita boleh menggunakan kelas WebSocket dalam API Java untuk melaksanakan komunikasi WebSocket.

Contoh Kod 2:

import java.net.URI;
import java.net.http.WebSocket;
import java.nio.ByteBuffer;
import java.util.concurrent.CompletableFuture;

public class WebSocketExample {

    public static void main(String[] args) {
        String serverURL = "ws://example.com/websocket";

        CompletableFuture<WebSocket> ws = WebSocket.newWebSocketBuilder()
                .buildAsync(URI.create(serverURL), new WebSocket.Listener() {
                    @Override
                    public void onOpen(WebSocket webSocket) {
                        System.out.println("连接已建立");
                    }

                    @Override
                    public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
                        System.out.println("接收到消息:" + data.toString());
                        return WebSocket.Listener.super.onText(webSocket, data, last);
                    }

                    @Override
                    public CompletionStage<?> onBinary(WebSocket webSocket, ByteBuffer data, boolean last) {
                        System.out.println("接收到二进制数据");
                        return WebSocket.Listener.super.onBinary(webSocket, data, last);
                    }

                    @Override
                    public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) {
                        System.out.println("连接已关闭,状态码:" + statusCode);
                        return WebSocket.Listener.super.onClose(webSocket, statusCode, reason);
                    }

                    @Override
                    public void onError(WebSocket webSocket, Throwable error) {
                        System.out.println("发生错误:" + error.getMessage());
                    }
                });

        // 向服务器发送消息
        ws.thenAccept(webSocket -> {
            webSocket.sendText("Hello Server", true);
        });

        // 断开连接
        ws.thenAccept(WebSocket::abort);
    }
}

Dalam kod di atas, kami mencipta WebSocket untuk menyambung ke pelayan yang ditentukan. Melalui kaedah panggil balik WebSocket, kami boleh mengendalikan interaksi dengan pelayan, termasuk menerima dan menghantar mesej, dan mengendalikan status sambungan.

Bahagian 3: Menggunakan JavaFX dan WebSocket untuk melaksanakan antara muka grafik untuk komunikasi masa nyata
Sekarang kami telah memahami asas JavaFX dan WebSocket, kami akan menggabungkan kedua-dua teknologi ini untuk melaksanakan aplikasi komunikasi masa nyata dengan antara muka grafik .

Contoh Kod 3:

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.net.URI;
import java.net.http.WebSocket;
import java.nio.ByteBuffer;
import java.util.concurrent.CompletableFuture;

public class RealTimeCommunicationApp extends Application {
    private WebSocket webSocket;
    private TextArea messageArea;

    @Override
    public void start(Stage primaryStage) {
        VBox root = new VBox();
        messageArea = new TextArea();
        TextField inputField = new TextField();

        inputField.setOnAction(e -> {
            String message = inputField.getText();
            webSocket.sendText(message, true);
            inputField.clear();
        });

        root.getChildren().addAll(messageArea, inputField);

        Scene scene = new Scene(root, 400, 300);
        primaryStage.setTitle("实时通信应用");
        primaryStage.setScene(scene);
        primaryStage.show();

        connectToServer();
    }

    private void connectToServer() {
        String serverURL = "ws://example.com/websocket";

        CompletableFuture<WebSocket> ws = WebSocket.newWebSocketBuilder()
                .buildAsync(URI.create(serverURL), new WebSocket.Listener() {
                    @Override
                    public void onOpen(WebSocket webSocket) {
                        Platform.runLater(() -> {
                            messageArea.appendText("连接已建立
");
                        });
                    }

                    @Override
                    public CompletionStage<?> onText(WebSocket webSocket, CharSequence data, boolean last) {
                        Platform.runLater(() -> {
                            messageArea.appendText("接收到消息:" + data.toString() + "
");
                        });
                        return WebSocket.Listener.super.onText(webSocket, data, last);
                    }

                    @Override
                    public CompletionStage<?> onBinary(WebSocket webSocket, ByteBuffer data, boolean last) {
                        Platform.runLater(() -> {
                            messageArea.appendText("接收到二进制数据
");
                        });
                        return WebSocket.Listener.super.onBinary(webSocket, data, last);
                    }

                    @Override
                    public CompletionStage<?> onClose(WebSocket webSocket, int statusCode, String reason) {
                        Platform.runLater(() -> {
                            messageArea.appendText("连接已关闭,状态码:" + statusCode + "
");
                        });
                        return WebSocket.Listener.super.onClose(webSocket, statusCode, reason);
                    }

                    @Override
                    public void onError(WebSocket webSocket, Throwable error) {
                        Platform.runLater(() -> {
                            messageArea.appendText("发生错误:" + error.getMessage() + "
");
                        });
                    }
                });

        ws.thenAccept(webSocket -> {
            this.webSocket = webSocket;
        });
    }

    public static void main(String[] args) {
        launch(args);
    }
}

Dalam kod di atas, kami mencipta tetingkap aplikasi JavaFX yang mengandungi kawasan teks dan kotak input teks. Apabila pengguna memasukkan teks dalam kotak input dan menekan kekunci Enter, program menghantar teks ke pelayan. Selepas menerima mesej daripada pelayan, program akan menambahkan mesej ke kawasan teks untuk paparan.

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan teknologi JavaFX dan WebSocket dalam Java 9 untuk melaksanakan antara muka grafik untuk komunikasi masa nyata. Dengan menguasai pengetahuan asas JavaFX dan WebSocket, digabungkan dengan contoh kod sebenar, kami boleh dengan mudah melaksanakan aplikasi antara muka grafik dengan keupayaan komunikasi masa nyata dalam Java 9. Semoga artikel ini dapat membantu anda!

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan antara muka grafik untuk komunikasi masa nyata menggunakan JavaFX dan WebSocket dalam Java 9. 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