如何在Java(GUI)中锁定框架

如何在Java(GUI)中锁定框架,java,user-interface,frameworks,awt,Java,User Interface,Frameworks,Awt,我正在启动一个Java项目,需要一种完全锁定框架的方法。我所说的封锁是指: 用户无法关闭它 用户不能拖动它 用户不能最小化它 它位于任务栏和其他所有内容的顶部(除非指定) 基本上,这是一个全屏接管。尝试使用,看看它是否适合您 尝试使用,看看它是否适合您 您可以尝试以下方法: import javax.swing.*; import java.awt.*; public class FullScreenTest extends JFrame { private GraphicsDe

我正在启动一个Java项目,需要一种完全锁定框架的方法。我所说的封锁是指:

  • 用户无法关闭它
  • 用户不能拖动它
  • 用户不能最小化它
  • 它位于任务栏和其他所有内容的顶部(除非指定)

基本上,这是一个全屏接管。

尝试使用,看看它是否适合您

尝试使用,看看它是否适合您

您可以尝试以下方法:

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

public class FullScreenTest extends JFrame {

    private GraphicsDevice device;
    private boolean isFullScreen = false;

    public FullScreenTest(GraphicsDevice device) {
        super(device.getDefaultConfiguration());
        this.device = device;
        setTitle("Display Mode Test");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    private void initComponents(Container c) {
        setContentPane(c);
        c.setBackground(Color.RED);
    }

    public void begin() {
        isFullScreen = device.isFullScreenSupported();
        setUndecorated(isFullScreen);
        setResizable(!isFullScreen);
        if (isFullScreen) {
            // Full-screen mode
            device.setFullScreenWindow(this);
            validate();
        } else {
            // Windowed mode
            pack();
            setVisible(true);
        }
    }

    public static void main(String[] args) {
        GraphicsEnvironment env = GraphicsEnvironment.
            getLocalGraphicsEnvironment();
        GraphicsDevice[] devices = env.getScreenDevices();
        FullScreenTest test = new FullScreenTest(devices[0]);
        test.initComponents(test.getContentPane());
        test.begin();
    }
}

您可以尝试以下方法:

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

public class FullScreenTest extends JFrame {

    private GraphicsDevice device;
    private boolean isFullScreen = false;

    public FullScreenTest(GraphicsDevice device) {
        super(device.getDefaultConfiguration());
        this.device = device;
        setTitle("Display Mode Test");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }

    private void initComponents(Container c) {
        setContentPane(c);
        c.setBackground(Color.RED);
    }

    public void begin() {
        isFullScreen = device.isFullScreenSupported();
        setUndecorated(isFullScreen);
        setResizable(!isFullScreen);
        if (isFullScreen) {
            // Full-screen mode
            device.setFullScreenWindow(this);
            validate();
        } else {
            // Windowed mode
            pack();
            setVisible(true);
        }
    }

    public static void main(String[] args) {
        GraphicsEnvironment env = GraphicsEnvironment.
            getLocalGraphicsEnvironment();
        GraphicsDevice[] devices = env.getScreenDevices();
        FullScreenTest test = new FullScreenTest(devices[0]);
        test.initComponents(test.getContentPane());
        test.begin();
    }
}


@Maxkie:“这样做可能吗?”我当然希望不会。谷歌Java Kiosk或Java Kiosk模式,因为我相信这就是你想要的。我见过的大多数解决方案都需要一些直接与操作系统交互的代码,因此您可能需要使用JNA或JNI。我研究了Kiosk模式,但我认为这将是太多的工作(使用JNA或JNI),而我可能需要全屏独占才能工作。是的,这是一个很大的工作,但如果您真的想要Kiosk功能,这是你需要做的。我希望你计划在专用的信息亭工作站上使用它,而不是征用一些可怜的schlub的计算机。实际上,这是一个移动信息亭类型的项目,但它只是创建某种菜单(可以运行shell命令和其他东西)。鉴于您可以使用Alt+F4和Alt+Tab在java中避开全屏显示,我正在考虑在java中找到一种捕捉击键并禁用的方法them@MaxMaxkie:“这样做可能吗?”我当然希望不会。谷歌Java Kiosk或Java Kiosk模式,因为我相信这就是你要找的。我见过的大多数解决方案都需要一些直接与操作系统交互的代码,因此您可能需要使用JNA或JNI。我研究了Kiosk模式,但我认为这将是太多的工作(使用JNA或JNI),而我可能需要全屏独占才能工作。是的,这是一个很大的工作,但如果您真的想要Kiosk功能,这是你需要做的。我希望你计划在专用的信息亭工作站上使用它,而不是征用一些可怜的schlub的计算机。实际上,这是一个移动信息亭类型的项目,但它只是创建某种菜单(可以运行shell命令和其他东西)。鉴于您可以使用Alt+F4和Alt+Tab在java中避开全屏显示,我正在考虑在java中找到一种方法来捕捉击键并将其禁用,我所读到的这似乎很危险。您提供的链接一直提到机器可能不支持此功能。一台机器实际支持它的可能性有多大,而且不会有危险?从我所读到的来看,这似乎有风险。您提供的链接一直提到机器可能不支持此功能。一台机器实际支持它的可能性有多大,而且没有危险?我运行了这段代码,我得到了一个小小的窗口:)那可能是我的设备吗?@MaxMackie如果
isFullScreen
boolean,你能打印出值并让我知道它是什么吗?事实上,这可以工作了,非常感谢——这正是我需要的。但是,这在任何计算机上都有效吗?它的局限性是什么?仔细想想,我不认为全屏排他性模式将帮助你实现你想要做的事情。虽然该应用程序显示为全屏,但在我的Mac OS 10.6机器上,我可以使用Cmd-Q轻松终止该进程。您的要求之一是用户不能关闭该应用程序,rt?请看和了解更多关于全屏独家模式的详细信息。是的,我在玩它,它可能会被杀死。但是ALT-F4和类似的东西不是简单的键盘快捷键吗?它们可以被禁用吗?我运行了这个代码,我得到了一个小小的窗口:)那可能是我的设备吗?@MaxMackie如果
isFullScreen
boolean,你能打印出值并让我知道它是什么吗?事实上,这是可行的,非常感谢——这正是我需要的。但是,这在任何计算机上都有效吗?它的局限性是什么?仔细想想,我不认为全屏排他性模式将帮助你实现你想要做的事情。虽然该应用程序显示为全屏,但在我的Mac OS 10.6机器上,我可以使用Cmd-Q轻松终止该进程。您的要求之一是用户不能关闭该应用程序,rt?请看和了解更多关于全屏独家模式的详细信息。是的,我在玩它,它可能会被杀死。但是ALT-F4和类似的东西不是简单的键盘快捷键吗?他们可以被禁用吗?