基于 Web 的 Java Swing Kiosk 应用程序

在本文中,我们将展示如何使用 Java Swing GUI 工具包和我们基于 Chromium 引擎的库 — JxBrowser 创建一个跨桌面Kiosk应用程序,该应用程序可在 Windows、Linux 和 Mac OS X 上运行,并显示现代 Web 内容。

Kiosk 应用程序广泛用于银行、教育、零售、旅游和娱乐等行业,用作信息点、POS 和产品促销工具。 只要有可能通过自动交易来增强人工服务,Kiosk就会发挥作用。 如今,通过专门的自助机器购买电影票、在大型商店挑选衣服、或在几分钟内办理登机手续的情况并不少见。 当然是业界已知的调整和技巧。 我们经常被问到这样一个问题,即如何使基于浏览器的应用程序以 Kiosk模式运行。 与在专门的Kiosk开发平台上构建的应用程序相比,这样的应用程序更容易支持、维护和升级。

在本文中,我们将展示如何使用 Java Swing GUI 工具包和我们基于 Chromium 引擎的库 — JxBrowser

创建一个跨桌面Kiosk应用程序,该应用程序可在 Windows、Linux 和 Mac OS X 上运行,并显示现代 Web 内容。

 Kiosk应用程序要求

您可以使用许多技术和工具来构建Kiosk应用程序。 通常,Kiosk应用程序的主要要求是它不应允许终端用户切换到环境中运行的其他应用程序(管理员可能能够与其他软件交互,但不能与终端用户交互)。 因此,您需要显示一个未经修饰的全屏窗口,不允许终端用户与在此环境中安装和运行的其他软件进行交互。

用Java Swing创建一个Kiosk

​​使用 Java Swing GUI 创建跨桌面Kiosk应用程序非常简单。 您需要做的就是创建 javax.swing.JFrame 实例,使其全屏/最大化、不可调整大小、最上层,并删除窗口装饰,如标题、窗口边框等。Java Swing API 提供了所有必要的功能。 以下示例代码演示了如何使用 Java Swing 创建一个简单的Kiosk用程序:

import javax.swing.*;
import java.awt.*;

public class KioskApp {
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        // Remove window title and borders
        frame.setUndecorated(true);
        // Make frame topmost
        frame.setAlwaysOnTop(true);
        // Disable Alt+F4 on Windows
        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        // Make frame full-screen
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        // Display frame
        frame.setVisible(true);
    }
}

在 Kiosk 中显示 Web 内容

使用上述代码构建的Kiosk应用程序不显示任何内容。 为了给我们的应用程序提供显示网页内容的能力,我们可以使用一个允许显示 HTML 内容的标准的 Java Swing 组件 (javax.swing.JEditorPane),,但它有很多限制,并不总是能正确显示基于 HTML5、CSS3 或 JavaScript 的网页内容。 相反,我们可以使用 JxBrowser 库。 JxBrowser 允许 Java 开发人员将基于 Chromium 的 Swing/JavaFX 组件嵌入到 Java 应用程序中,以显示使用 HTML5、CSS3、JavaScript、Flash、Silverlight 等构建的网页。

让我们修改上面的代码并引入允许显示 Web 内容的功能。 我们将添加两个按钮:Google 和 BBC News。 当用户按下 Google 按钮时,我们将让应用程序显示 Google 搜索页面。 当用户按下 BBC News按钮时,应用程序将显示 BBC 新闻主页,用户可以在其中阅读最新新闻。

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) {
        // Create Browser instance
        final Browser browser = new Browser();

        // Create Google and BBC News buttons
        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);
        // Remove window title and borders
        frame.setUndecorated(true);
        // Make frame topmost
        frame.setAlwaysOnTop(true);
        // Disable Alt+F4 on Windows
        frame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
        // Make frame full-screen
        frame.setExtendedState(Frame.MAXIMIZED_BOTH);
        // Display frame
        frame.setVisible(true);
    }
}

如果您运行此应用程序并按下 BBC News按钮,您将获得以下输出:

由于 Java Swing 和 JxBrowser 支持触摸屏,因此您的Kiosk应用程序可以部署在支持触摸屏的环境中以及锁定的桌面站上。

结论

使用这种基于 Java Swing GUI Toolkit + JxBrowser 的方法,您可以构建允许终端用户与基于 Web 的内容进行交互的跨桌面Kiosk应用程序。 您可以显示不同的网站、门户网站、基于网络的在线帮助系统等。

因此,如果您对Kiosk应用程序有以下要求,那么强烈推荐您使用本文中描述的方法:

  • Kiosk应用程序必须在 Windows、Mac OS X 和 Linux 平台上运行。
  • Kiosk应用程序必须使用 Java Swing 或 JavaFX 框架构建。
  • Kiosk应用程序必须显示 HTML5/CSS/JavaScript 网页内容和网页在线/离线。
  • Kiosk应用程序必须支持触摸屏。

参考链接

Java Swing Tutorials

JxBrowser Library

JxBrowser API Javadoc

Why Use Browser-based content on Kiosks?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值