繁体   English   中英

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

[英]Stopping the use of Tab/Alt-F4 in a full-screen program in Java/Swing

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

使程序全屏使用;

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

 window.setUndecorated(true); //remove decorations e.g. x in top right

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

window.setAlwaysOnTop(true);

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

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

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

 /**
     * 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();
        }
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM