在Java/Swing的全屏程序中停止使用Tab/Alt-F4

Jam*_*ray 4 java swing fullscreen

在我的Java程序运行时,我需要一种方法来阻止人们使用其他程序.即停止人们切换标签并按Alt-F4.

Har*_*and 9

使程序全屏使用;

 window.setExtendedState(Frame.MAXIMIZED_BOTH); //maximise window

 window.setUndecorated(true); //remove decorations e.g. x in top right
Run Code Online (Sandbox Code Playgroud)

并使窗口始终在最顶层使用(阻止人们使用其他正在运行的程序);

window.setAlwaysOnTop(true);
Run Code Online (Sandbox Code Playgroud)

  • 如果窗口失去焦点,任务栏确实可见,但是当窗口失去焦点作为修复时,您可以使用机器人单击:D (3认同)

Cur*_*tis 7

您无法在Java级别执行此操作 - 您需要将操作系统置于某种"Kiosk模式"中.

未经请求的评论 - 您是否需要这个,因为您(或您的客户)讨厌您的用户,并希望他们永远诅咒您?您是否计划在程序中添加"关闭计算机"等功能?

  • +1未经请求的评论.我会快速卸载这样的程序. (9认同)
  • 也许这是一个针对某种公共终端或其他东西的程序.我很难想象为什么在普通台式电脑或笔记本电脑上需要这样的程序. (7认同)

use*_*442 6

如果您正在寻找全屏支持,这是我使用的代码.应该足以让你去.您只需要一个全局布尔变量来说明应用程序是否全屏.你可以修补它,让它显示你喜欢的.

 /**
     * Method allows changing whether this window is displayed in fullscreen or
     * windowed mode.
     * @param fullscreen true = change to fullscreen,
     *                   false = change to windowed
     */
    public void setFullscreen( boolean fullscreen )
    {
        //get a reference to the device.
        GraphicsDevice device  = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
        DisplayMode dispMode = device.getDisplayMode();
        //save the old display mode before changing it.
        dispModeOld = device.getDisplayMode();

        if( this.fullscreen != fullscreen )
        { //are we actually changing modes.
            //change modes.
            this.fullscreen = fullscreen;
            // toggle fullscreen mode
            if( !fullscreen )
            {
                //change to windowed mode.
                //set the display mode back to the what it was when
                //the program was launched.
                device.setDisplayMode(dispModeOld);
                //hide the frame so we can change it.
                setVisible(false);
                //remove the frame from being displayable.
                dispose();
                //put the borders back on the frame.
                setUndecorated(false);
                //needed to unset this window as the fullscreen window.
                device.setFullScreenWindow(null);
                //recenter window
                setLocationRelativeTo(null);
                setResizable(true);

                //reset the display mode to what it was before
                //we changed it.
                setVisible(true);

            }
            else
            { //change to fullscreen.
                //hide everything
                setVisible(false);
                //remove the frame from being displayable.
                dispose();
                //remove borders around the frame
                setUndecorated(true);
                //make the window fullscreen.
                device.setFullScreenWindow(this);
                //attempt to change the screen resolution.
                device.setDisplayMode(dispMode);
                setResizable(false);
                setAlwaysOnTop(false);
                //show the frame
                setVisible(true);
            }
            //make sure that the screen is refreshed.
            repaint();
        }
    }