在 java 程序中调用 Javascript 弹出窗口

Call Javascript Popup in java program

我正在尝试在 java 程序(网络)中显示弹出窗口。

我尝试将 ScriptEngine 与 javascript、nashorn 结合使用,但失败了。因为alert,confirm,prompt不是js的方法

java程序中的代码:

ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn");
engine.eval(new FileReader("script.js"));

Invocable invocable = (Invocable) engine;
invocable.invokeFunction("openPopup", "ABC XYZ");

并在 script.js 中:

function openPopup(str){
    alert(str);
}

运行吧,错误显示:

"alert" is undefined

说明

在 Java 中打开 Java脚本弹出窗口 不可能。 Java脚本引擎Nashorn不提供这个方法。它通常是由 浏览器 .

提供的功能

这也是您得到的原因:

"alert" is undefined


解决方案

您可以使用 Java 中的不同工具打开弹出窗口 windows,例如 SwingJavaFX。您可以使用这些工具创建具有 图形用户界面 (GUI) 的程序,即 具有 windows.

这是 Oracle 关于如何使用 Swing 创建对话框的 official tutorial

创建只是一个简单的弹出窗口的相关方法是:

JOptionPane.showMessageDialog(frame, "Hello world!");

其中 frame 是对 window 的引用,它应该是此弹出窗口的父项。但是,您可以简单地传递 null 以获得 快速而肮脏的弹出窗口 :

JOptionPane.showMessageDialog(null, "Hello world!");

只需使用上面的代码,导入 JOptionPane 就可以了:

import javax.swing.JOptionPane;

class 有更多有趣的检查方法,例如输入对话框。这是它的 documentation.


JavaFX 解决方案有点复杂,因为它需要您设置框架并处理多个事件。

您可以查看其他问题 SO: Popup window with table view in JavaFX 2.0. It uses the designated class Popup (documentation)。