我有一个表格我设置为最大化 ,但由于某种原因,它忽略了任务栏并最大化到整个屏幕。 那是典型的吗? 有解决方法吗? 我正在运行带有双显示器设置的Windows XP(第一个/主窗口中的任务栏)。 ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我刚刚注意到,当我在第二个屏幕上最大化一个框架时-该框架没有任务栏-然后它的最终边界大约是如果任务栏在那的话。
我刚刚注意到它已切换到Windows7。以前在Vista中,我有一个实用程序可将任务栏添加到两个屏幕上,因此,如果不是这样的话,那里也可能是一个问题。 我敢肯定,在Linux中,我已经尝试过几个窗口管理器,这并不是问题。
如果我使用默认的LAF运行程序,则会表现出正确的行为(使用屏幕的整个水平空间)。 我认为StackOverflow并不是提交物质缺陷报告的最佳场所,但是如果有人可以提出补救措施,或者确认它确实是缺陷并有助于确定其发生的情况,将不胜感激。
编辑:我刚刚在源代码中进行了一些挖掘,发现了一些对发行213的引用; 恰好是我现在遇到的缺陷,该缺陷在当时(早在2007年)已得到修复,并据报道可以在XP和Vista的现代版本中正常工作(4.1)。 我可能会在某些时候尝试调试相关的代码位。 看起来相当可管理。
/风滚草
我要说的是,如果仅在Substance 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像素插图。
现在,您所需要做的就是弄清您的应用程序在哪个屏幕上运行。 如果您的应用程序窗口是JFrame
或Window
任何其他子类,则可以使用Window.getGraphicsConfiguration()
来获取活动屏幕的图形配置。
我希望这会有所帮助(也许会帮助从事Substance Bug的人们!)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.