你能创建一个无法解决的,不可解决的Java应用程序吗?

时间:2012-10-08 13:35:31

标签: java swing jframe

有没有办法确保用户无法关闭或离开我的Swing应用程序?我试图将其全屏显示,但你仍然可以使用Alt-Tab远离它 - 此外,当你决定使用JOptionPane的对话框时,这种方法效果不佳。

那么,有没有办法让用户在设备上只使用这一个Java程序?

编辑:有些人想知道这个目的。该应用程序应该被“嵌入”到手持设备(在Windows下运行),因此设备的用户将使用它,因为我们打算使用它 - 例如,他们不会玩Freecells或做更糟糕的是,而不是做实际的工作。你看过售票亭了吗?他们被锁定得很好,你不能只关闭他们华而不实的GUI并进入Windows桌面!

5 个答案:

答案 0 :(得分:6)

好的@Daniel通过调用以下方式向您展示了如何使Java应用程序无法关闭(+1给他)

JFrame#setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

<{1>}实例上的

确保你不能离开它,即按 CTRL + ALT + DEL ALT + < kbd> TAB 等你可能想要这样做(仅适用于windows):

1)通过以下方式禁用TaskManager / CTRL + ALT + DEL

  • 设置注册表项:

      

    HKCU / Software / Microsoft / Windows / CurrentVersion / Policies / System / DisableTaskMgr = 1

    通过reg脚本或cmd.exe。

2)要一起禁用所有快捷方式,例如 ALT + TAB 等,请参阅here(下载/使用JFrame脚本并通过*.reg)。

答案 1 :(得分:3)

无法接受是的,您可以使用setDefaultCloseOperation();并将其传递给JFrame.DO_NOTHING_ON_CLOSE

示例:

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

class app extends JFrame {
    app(String title, int height, int width)
    {
        super (title);
        setSize(width, height);
        setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
        setVisible(true);
    }

}
class program {
    public static void main(String[] args) {
        app myApp = new app("Hello", 350, 750);
    }
}

答案 2 :(得分:2)

我们做了类似于POS应用程序的事情,但我们做了一些欺骗。虽然使用全屏帮助很多,但我们发现用户仍然可以退出应用程序。

最后,我们创建了一个Windows服务(是的,我们在Windows上运行),它会在关闭后立即自动进行RESTAR。因此,您可以看到Windows桌面(我们删除了图标)一瞬间,然后再次弹出应用程序。这样做的好处是我们可以从Intranet远程更新JAR文件,所有用户需要做的是按下一个关闭系统的按钮,它会自动重启并更新。我们想使用WebStart,但在将它与我们的包装器集成时遇到了问题。

包装器本身是一个Python应用程序,它只启动JVM和应用程序,编译为EXE。简单但有效。

净效应是一个可关闭的应用程序,它将自动重新启动。足够我们使用,我们需要用户只能做一件事和一件事。为应用程序提供启动凭据管理员权限,以及用户只是一个普通帐户,也可以处理讨厌的'alt-ctrl-del'用户。你不能杀死一个比你自己拥有更高访问权限的进程。

如果你不想写自己的包装纸,给http://wrapper.tanukisoftware.com/doc/english/product-overview.html一个旋转,它看起来像一个很棒的产品。

答案 3 :(得分:1)

您可以在应用中捕捉到您喜欢的任何击键(并忽略它们),因此可以修复Alt-Tab。应用程序可以从不(ish)处理自身的一个组合键是Ctrl + Alt + Delete,出于安全原因,它在许多操作系统中被挂接到内核中。作为旁注:这就是为什么许多登录屏幕要求您在输入用户名和密码之前点击C + A + D.

答案 4 :(得分:1)

您可以创建一个无法最大化或关闭的最大化窗口。您还必须捕获某些击键,例如CTRL + SHIFT + ESCAPE,ALT + TAB,WIN + [任何],各种Fn键,并且您必须做一些事情来阻止CTRL + ALT + DELETE工作(来自显示任务管理器或在Windows Vista或7中显示蓝色选项屏幕。

我相信有一些Windows API调用可以某种方式改变CTRL + ALT + DELETE的行为,但不知道它们是什么。调查的好地方是Sysinternals Process Explorer,它具有替换任务管理器的功能。弄清楚它是如何做到的,然后复制它。