setUndecorated()
。即使我打电话
setVisible(false)
,
isDisplayable()
仍然返回true。 API说,使框架不可放置的唯一方法是重新创建它。但是,我不想重新创建框架只是为了关闭一些标题栏。
我正在制作一个可以在全屏和窗口模式之间切换的全屏幕应用程序;它应该在维护状态时能够切换等等。
在可见框架后,我该怎么做?
您尝试调用
Frame.dispose()
然后更改它?我自己没有尝试过,但可能会起作用。
如果不是,那么您可以做的就是将框架一个无关紧要的部分,只有最小的钩子到最高级别的面板或面板,只需将它们移至新帧即可。所有的孩子都将跟随。你不能。当我试图实现同样的事情时,这是我的经验。
无论您将整个UI都放在框架中的一个面板中,都可以创建一个新框架并将该面板添加到框架中。工作不多。 像这样的东西:
// to start with
JPanel myUI = createUIPanel();
JFrame frame = new JFrame();
frame.add(myUI);
// .. and later ...
JFrame newFrame = new JFrame();
newFrame.setUndecorated();
newFrame.add(myUI);
值
dispose()
setVisible(true)
dispose();
setUndecorated(true/false);
setVisible(true);
in方法
switchFullscreenMode()
:dispose();
...
setFullScreenWindow(...);
setUndecorated(true/false);
setBounds(mXPos, mYPos, mWidth, mHeight);
...
setVisible(true);
实际上,如果鼠标触摸侧面,还有更多的东西可以隐藏各种侧pan。也请注意,您必须明确设置边界。
我不建议直接获取默认屏幕:
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
使用屏幕,您的jframe当前正在启用:
setBounds(getGraphicsConfiguration().getBounds());
getGraphicsConfiguration().getDevice().setFullScreenWindow(this);
尽管目前相同,但它可能会在将来发生变化。
try:
dispose();
setUndecorated(true);
setVisible(true);
检查一下。希望它会有所帮助!
韦尔,您将需要不同的框架实例。您也许可以在不重新创建框架的情况下移动框架的内容。这里的关键是使您的代码不依赖于特定的框架。无论如何,这都是一个基本的好习惯。
HERHE是如何制作
alt+enter
进入全屏的代码,而无需条形模式,并最小化标题栏和开始栏:
这不是答案,但是我也有同样的问题,不想复制。我尝试了:
private void toggleFullScreen() {
// Get the default graphics device (screen)
GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
dispose();
setUndecorated(true);
gd.setFullScreenWindow(this);
setExtendedState(MAXIMIZED_BOTH);
setVisible(true);
}
框架出现一秒钟,然后消失。绝对不知道我在做什么错。