【发布时间】:2014-03-08 23:20:47
【问题描述】:
现在我在我的程序中正在做的是我正在使用setundecorated = true 和MAXIMIZED_BOTH 所以它让它全屏显示并且显示看起来非常好,但问题是有图像(边框)在我屏幕的左侧和右侧以及蓝色背景。发生的情况是,在更改屏幕和分辨率时,这些会受到干扰并且无法正确显示。那些灰色的补丁又出现了
历史:
我有一个想要全屏打开的 java 程序;我无法找到正确执行此操作的方法,因此我将最小值调整为 (1370, 727) 和最大尺寸。因此,它开始在我的笔记本电脑上正常打开,但是当我将笔记本电脑的显示屏更改为 LCD 时,它开始出现问题:
它在一个较小的窗口中打开:
如果我然后单击最大化按钮,则侧面和底部会出现一个灰色区域(我希望屏幕上的项目能够被拉伸或居中):
例如,底部有一个灰色的补丁。相反,我希望背景覆盖整个屏幕。
更新 1 如果我更改为可拉伸的 gridbaglayout,这是我使用的代码以及会发生什么:
Menu.setExtendedState(MAXIMIZED_BOTH);
GridBagLayout gbl = new GridBagLayout();
Menu.setLayout(gbl);
JButton component = new JButton("1");
gbl.layoutContainer(Menu);
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.NONE;
gbl.setConstraints(component, gbc);
Menu.add(component);
Menu.pack();
Menu.setVisible(true);
问题
我如何将“这个”框架设置为 setExtendedState(MAXIMIZED_BOTH),就像我对其他人所做的那样? (如果我在 main 函数中这样做,我会得到一个错误;即使我为此创建一个函数并在 main 中调用它,我也会得到一个错误)
如何让所有内容根据额外的灰色空间拉伸/重新排列?
更新 2 我在这个项目中的文件:
更新 3 这是我正在处理的当前文件"FormTTS.java" 在那里搜索“MAXIMIZED_BOTH”,你会找到我认为你会想要检查的代码。
【问题讨论】:
-
我知道这不是答案,因此我将其作为评论。但是您是否考虑过使用 JavaFX 代替?它是块上新的 GUI 小子,它既易于开发,又易于观察。使 JavaFX 中的应用程序全屏显示是 kids play。 Oracle 早就说过他们放弃了 Swing 的开发,转而使用 JavaFX。你绝对应该考虑换一个。
-
@MartinAndersson 您能否为我详细说明一下,您的意思是什么?我必须重新制作整个程序吗?对不起,我没有完全理解你,也许因为我是新手对不起:P
-
我不想把这个作为答案,因为我不确定它是否会对你的情况有所帮助,但调用
frame.setUndecorated(true)将删除顶部框架边框(标题所在的位置)和侧边框,用其中的任何内容填充其余空间(如果您的面板旨在填充屏幕) -
@VinceEmigh 我会试着放一次。
-
我曾经使用 Swing 来开发 GUI(没什么专业的,只是为了我自己)。我正在做的最新一件事是,我意识到这将是多么痛苦,并开始使用 JavaFX,但后来意识到,当我只能使用 CSS 和 Javascript(比如 JQuery)时,为什么还要使用它。老实说,我开始认为 WebApp 可能是最好的部署方法(后端使用 Java 并不复杂),前端与 Java(即 servlet 和 JSP)对话也不复杂,而且它非常便携(用户只需要一个浏览器)——只要我的两分钱。
标签: java swing user-interface awt fullscreen