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

Jok*_*_vD 9 java swing jframe

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

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

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

Dav*_*amp 6

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

JFrame#setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);

JFrame实例上.

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

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

  • 设置注册表项:

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

    通过reg脚本或cmd.exe.

2)要像ALT+ TAB等一样禁用所有快捷方式,请参阅此处 (下载/使用*.reg脚本并通过它执行cmd).

  • @Rempelos也许我误解了,嗯,但你可以,只需使用`Runtime.exec(...)`或`ProcessBuilder`调用`cmd.exe`和注册表脚本路径的参数,或者OP可以查看REG添加`cmd.exe`的命令 (2认同)

dsg*_*fin 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这涵盖了不可关闭但不不可离开。 (4认同)
  • @Daniel +1 很好的例子。尽管我建议不要扩展“JFrame”类并始终在“Event-Dispatch-Thread”上启动 GUI;是的,当然可以,也许不是纯java(但使用一些技术请参阅我的答案)... (2认同)