基于 Web 的 Java Swing 自助终端应用程序本文展示如何创建跨桌面自助服务终端应用,兼容 Win、Linux
自助服务应用程序在银行、教育、零售、旅游和娱乐等多个行业中得到广泛应用,作为信息点、销售点和产品推广工具。只要可以将人工服务与自动交易相结合,自助服务机就会发挥作用。如今,使用专门的自助服务机购买电影票、在大型商店中挑选衣物,或在几分钟内办理航班值机手续已变得司空见惯。
在自助服务机应用软件的开发过程中,行业内确实有一些技巧和窍门。我们经常被问到这样一个问题,即如何使基于 Browser 的应用程序以自动服务终端模式运行。 与建立在专门的自助服务终端开发平台上的应用程序相比,这样的应用程序更易于支持、维护和升级。
在本文中,我们将展示如何创建一个跨桌面的自助服务终端应用程序,该程序可在 Windows、Linux 和 Mac OS X 上运行,并利用 Java Swing GUI 工具包和我们基于 Chromium Engine 的库 — JxBrowser,来显示现代 Web 内容。
自助服务终端应用程序要求
您可以使用多种技术和工具来构建自助服务终端应用程序。通常,自助服务终端应用程序的主要要求是不允许终端用户切换到环境中运行的其他应用程序(管理员可以与其他软件交互,但终端用户不能)。因此,您需要显示一个没有装饰的全屏窗口,这样终端用户就无法与此环境中安装和运行的其他软件进行交互。
使用 Java Swing 创建自助服务终端
使用 Java Swing GUI 来创建一个跨桌面平台的自助服务终端应用程序非常简单。您只需创建一个 javax.swing.JFrame
实例,使其全屏/最大化、不可调整大小、置顶,并移除窗口装饰,例如标题栏、窗口边框等。Java Swing API 提供了所有必要的功能。以下示例代码演示了如何使用 Java Swing 创建一个简单的自助服务终端应用程序:
import javax.swing.*;
import java.awt.*;
public class KioskApp {
public static void main(String[] args) {
JFrame frame = new JFrame();
// 移除窗口标题和边框
frame.setUndecorated(true);
// 使窗口置顶
frame.setAlwaysOnTop(true);
// 禁用 Windows 上的 Alt+F4 关闭操作
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
// 使窗口全屏显示
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
// 显示窗口
frame.setVisible(true);
}
}
在自助服务终端中显示 Web 内容
使用上述代码构建的自助服务终端应用程序不显示任何内容。 为了使我们的应用程序能够显示网页内容,我们可以使用标准的 Java Swing 组件 (javax.swing.JEditorPane
) 来显示 HTML 内容,但它有很多限制,并不总是能正确显示基于 HTML5、CSS3 或 JavaScript 的 Web 内容。相反,我们可以使用 JxBrowser 库。JxBrowser 允许 Java 开发者将基于 Chromium 的 Swing/JavaFX 组件嵌入到 Java 应用程序中,以显示使用 HTML5、CSS3、JavaScript、Flash、Silverlight 等构建的网页。
让我们修改上述代码,并添加显示 Web 内容的功能。我们将添加两个按钮:Google 和 BBC News。当用户按下 Google 按钮时,应用程序将显示 Google 搜索网页。当用户按下 BBC News 按钮时,应用程序将显示 BBC News 的主页,用户可以在其中阅读最新新闻。
import com.teamdev.jxbrowser.chromium.Browser;
import com.teamdev.jxbrowser.chromium.swing.BrowserView;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class KioskApp {
public static void main(String[] args) {
// 创建 Browser 实例
final Browser browser = new Browser();
// 创建 Google 和 BBC News 按钮
JButton googleButton = new JButton("Google");
googleButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
browser.loadURL("https://www.google.com");
}
});
JButton bbcButton = new JButton("BBC News");
bbcButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
browser.loadURL("http://www.bbc.com/news");
}
});
JPanel actionPane = new JPanel();
actionPane.add(googleButton);
actionPane.add(bbcButton);
JFrame frame = new JFrame();
frame.add(actionPane, BorderLayout.WEST);
frame.add(new BrowserView(browser), BorderLayout.CENTER);
// 移除窗口标题和边框
frame.setUndecorated(true);
// 使窗口置顶
frame.setAlwaysOnTop(true);
// 禁用 Windows 上的 Alt+F4 关闭操作
frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
// 使窗口全屏显示
frame.setExtendedState(Frame.MAXIMIZED_BOTH);
// 显示窗口
frame.setVisible(true);
}
}
如果您运行此应用程序并按下 BBC News 按钮,您将获得以下输出:
由于 Java Swing 和 JxBrowser 支持触摸屏,您的自助服务终端应用程序不仅可以部署在支持触摸屏的环境中,也可以部署在锁定的桌面工作站上。
结论
使用基于 Java Swing GUI 工具包和 JxBrowser 的方法,您可以构建跨桌面平台的自助服务终端应用程序,使终端用户能够与基于 Web 的内容进行交互。您可以显示不同的网站、门户网站、基于 Web 的在线帮助系统等。
因此,如果您对自助服务终端应用程序有以下要求,那么本文描述的方法非常值得推荐:
- 自助服务终端应用程序必须能够在 Windows、Mac OS X 和 Linux 平台上运行。
- 自助服务终端应用程序必须使用 Java Swing 或 JavaFX 框架构建。
- 自助服务终端应用程序必须能够在线或离线显示 HTML5/CSS/JavaScript Web 内容和网页。
- 自助服务终端应用程序必须支持触摸屏。
参考链接
- Java Swing 教程:docs.oracle.com/javase/tuto…
- JxBrowser 库:teamdev.cn/jxbrowser/?…
- JxBrowser API Javadoc:www.teamdev.com/downloads/j…
- 为什么在自助服务终端上使用基于 Browser 的内容?:www.kioware.com/resources.a…
转载自:https://juejin.cn/post/7425467139603693620