如何在 Java 9 中使用 JavaFX 实现 JShell?\
javaobject oriented programmingprogramming更新于 2025/11/14 14:04:17
JShell 是一个用于实现示例表达式的交互式工具。我们可以使用 JavaFX 应用程序以编程方式实现 JShell,然后我们需要在下面列出的 Java 程序中导入一些包
import jdk.jshell.JShell; import jdk.jshell.SnippetEvent; import jdk.jshell.VarSnippet;
在下面的示例中,实现了一个示例 Java FX 应用程序。我们将在 文本字段 中输入不同的值,然后按"eval"按钮。它将在列表中显示具有相应数据类型的值。
示例
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();
}
}
输出
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

