gpt4 book ai didi

使用 Substance LAF,Java 窗口无法在没有任务栏的情况下在屏幕上正确最大化

转载 作者:太空宇宙 更新时间:2023-11-04 08:40:55 25 4
gpt4 key购买 nike

我刚刚注意到,当我在第二个屏幕(没有任务栏)上最大化一个框架时,它最终会达到人们预期的边界(如果任务栏在那里)。

我刚刚注意到这一点已经切换到 Windows 7。以前在 Vista 中,我有一个实用程序可以向两个屏幕添加任务栏,因此如果情况并非如此,这也可能是一个问题。我很确定这在我尝试过的几个窗口管理器的 Linux 中不是问题......

如果我使用默认的 LAF 运行程序,则会表现出正确的行为(使用屏幕的整个水平空间)。我认为 StackOverflow 并不是提交 Substance 错误报告的最佳地点,但如果有人可以提出补救措施,或者确认它确实是一个错误并帮助确定它发生的情况,我们将不胜感激。

编辑:我刚刚对源代码进行了一些挖掘,发现了一些对 issue 213 的引用;这正是我现在遇到的缺陷,据称该缺陷在当时(早在 2007 年)已得到修复,并且据报道在现代版本(4.1)的 XP 和 Vista 中可以正常工作。我可能会在某个时候尝试调试相关的代码;看起来相当容易管理。

/风滚草

最佳答案

我想说,如果它只发生在物质 LaF 上,那么它听起来绝对像是一个你应该报告的错误......但我在发布之前刚刚看到了你的编辑。祝你在 4 年后成功说服他们修复它!

与此同时,您可以尝试的唯一真正的解决方法是获取当前显示的插图并以这种方式设置大小。下面是一些代码,用于计算每个显示器上的分辨率、边界和可用空间:

 public static void main(String... args) throws Exception {
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gds = ge.getScreenDevices();
for (GraphicsDevice gd : gds) {
GraphicsConfiguration gc = gd.getDefaultConfiguration();
System.out.println("Bounds = " + gc.getBounds());
System.out.println("Insets = " + Toolkit.getDefaultToolkit().getScreenInsets(gc));
}
}

在像我这样的双屏 Windows 设置上,这会显示以下内容:

Bounds = java.awt.Rectangle[x=0,y=0,width=1280,height=1024] Insets = java.awt.Insets[top=0,left=0,bottom=30,right=0] Bounds = java.awt.Rectangle[x=1280,y=0,width=1280,height=1024] Insets = java.awt.Insets[top=0,left=0,bottom=0,right=0]

请注意显示器 1 底部的 30 像素插图。

现在您需要做的就是弄清楚您的应用程序正在哪个屏幕上运行。如果您的应用程序窗口是 JFrameWindow 的任何其他子类,则可以使用 Window.getGraphicsConfiguration() 获取 Activity 屏幕的图形配置。

我希望这会有所帮助(也许它会帮助那些致力于解决 Substance bug 的人!)

关于使用 Substance LAF,Java 窗口无法在没有任务栏的情况下在屏幕上正确最大化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5330527/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com