我需要一种方法来阻止人们在我的Java程序运行时使用其他程序。即停止人们切换标签并按Alt-F4。
答案 0 :(得分:9)
使程序全屏使用;
window.setExtendedState(Frame.MAXIMIZED_BOTH); //maximise window
window.setUndecorated(true); //remove decorations e.g. x in top right
并使窗口始终处于最顶层使用(阻止人们使用其他正在运行的程序);
window.setAlwaysOnTop(true);
答案 1 :(得分:7)
您无法在Java级别执行此操作 - 您需要将操作系统置于某种“Kiosk模式”中。
未经请求的评论 - 您是否需要这个,因为您(或您的客户)讨厌您的用户,并希望他们永远诅咒您?您是否计划在程序中添加“关闭计算机”等功能?
答案 2 :(得分: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();
}
}