如何正确地输出Java全屏幕

12
现在我程序中正在使用setundecorated = trueMAXIMIZED_BOTH让它全屏,并且显示效果很好,但问题是屏幕左右两侧有图像边框和蓝色背景。在切换屏幕和分辨率时,这些会受到干扰并且不能正确显示,灰色斑块会再次出现。
历史:
我有一个Java程序,我希望在全屏状态下始终打开;我无法找到合适的方法,因此我调整了最小值为(1370, 727)以及最大尺寸。因此,在我的笔记本电脑上开始正常打开,但当我将笔记本电脑的显示器更改为LCD时,它开始出现问题:
它以较小的窗口打开: Login Window 如果我然后点击最大化按钮,会在侧面和底部出现灰色区域(我希望屏幕上的项目被拉伸或居中): enter image description here 例如,这里底部有一个灰色补丁。相反,我希望背景覆盖整个屏幕。 更新1 如果我改为可拉伸的网格包布局,则使用的代码及其发生的情况如下:
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);

enter image description here

问题

  1. 如何将“this”帧设置为setExtendedState(MAXIMIZED_BOTH),就像我对其他帧所做的那样?(如果我在主函数中这样做,就会出现错误;即使我为此编写一个函数并在主函数中调用它,我也会遇到错误)

  2. 如何让所有内容根据额外的灰色空间自动拉伸/重新排列?

更新2 我在该项目中的文件:

enter image description here

更新3 我正在处理的当前文件"FormTTS.java" 在其中搜索“MAXIMIZED_BOTH”,您将找到我认为您想要检查的代码。


@MartinAndersson,您能否为我详细解释一下,您的意思是什么?我需要重新制作整个程序吗?抱歉,我可能没有完全理解您的意思,可能是因为我是新手,抱歉 :P - Daksh Shah
我不想把这个作为答案,因为我不确定它是否能帮助到你,但是调用 frame.setUndecorated(true) 将会移除顶部框架边框(标题所在的位置)和侧边框,将其余空间填充为面板内的任何内容(如果您的面板意图填满屏幕)。 - Dioxin
@VinceEmigh 我会试着只放一次。 - Daksh Shah
@MartinAndersson 谢谢,我以后会更多地了解Javafx,因为问题是我想尽快完成项目,所以现在不能再做一遍:P - Daksh Shah
1
我曾经使用Swing来开发GUI(仅限个人使用,没有专业用途)。最近我在做的事情是,我意识到它将会是多么痛苦,于是开始使用JavaFX,但后来意识到,为什么要使用JavaFX呢?我可以直接使用CSS和Javascript(例如JQuery)。老实说,我开始认为WebApp可能是部署的最佳方法(而且使用Java作为后端并不复杂),前端与Java通信也不复杂(例如servlets和JSPs),而且非常便携(用户只需要浏览器)——这只是我的个人看法。 - Jared
显示剩余8条评论
11个回答

-1
我在我的应用程序中遇到了类似的问题。我所做的最接近的尝试是将所有位于顶部的组件设置为component.setOpaque(false)或component.setBackground(new Color(255,255,255,0))。对于未使用的面板,您也可以尝试panel.setVisible(false)。 没有整个程序很难提供代码,但可以试试这个:
Menu.setBackground(new Color(255,255,255,0);

如何通过设置setVisible为false来解决我的问题?您能否详细解释一下? - Daksh Shah
就像您必须将JFrame设置为setVisible(true)才能看到框架一样,它也可以应用于面板和其他组件。如果您将周围未使用的面板设置为setVisible(false),则应增加中心面板的区域量。如果不是这种情况,则您的图片分辨率不够高,无法适应您的屏幕。 - JRave
@JRrave,我觉得这不是我在这里寻找的东西,我想我想要的是将所有组件调整为全屏或类似的操作。并且我并不是在每个地方都使用jPanels,也无法理解你所说的内容。我只是一个15岁的新手,抱歉。如果你需要任何信息来了解我想要的,请随时提问... - Daksh Shah
你可以将组件视为可以放置在JFrame上方的任何东西。请参见我的答案。 - JRave
我认为@JRave是在提到你的“灰色背景”问题,虽然没有解决你的尺寸问题,但在我看来这是一个公正的答案。 :-) - Udo Klimaschewski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接