Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách triển khai JShell bằng JavaFX trong Java 9?

JShell là công cụ tương tác dùng để thực thi các biểu thức mẫu. Có thể triển khai JShell theo chương trình dùng ứng dụng JavaFX, cần import một số package:

import jdk.jshell.JShell;
import jdk.jshell.SnippetEvent;
import jdk.jshell.VarSnippet;

Ví dụ dưới đây triển khai ứng dụng JavaFX mẫu. Nhập giá trị vào text field và nhấn nút "eval". Kết quả hiển thị kèm kiểu dữ liệu trong danh sách.

Ví dụ

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.stage.Stage;
import java.util.List;
import jdk.jshell.JShell;
import jdk.jshell.SnippetEvent;
import jdk.jshell.VarSnippet;

public class JShellFXTest extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        JShell shell = JShell.builder().build();
        TextField textField = new TextField();
        Button evalButton = new Button("eval");
        ListView<String> listView = new ListView<>();
        evalButton.setOnAction(e -> {
            List<SnippetEvent> events = shell.eval(textField.getText());
            events.stream().map(event -> convert(event)).filter(s -> s != null).forEach(s -> listView.getItems().add(s));
        });
        BorderPane pane = new BorderPane();
        pane.setTop(new HBox(textField, evalButton));
        pane.setCenter(listView);
        Scene scene = new Scene(pane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static String convert(SnippetEvent e) {
        if (e.snippet() instanceof VarSnippet) {
            return ((VarSnippet) e.snippet()).typeName() + " " + ((VarSnippet) e.snippet()).name() + " " + e.value();
        }
        return null;
    }

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

Kết quả

Cách triển khai JShell bằng JavaFX trong Java 9?