每当我在JFrame上调用pack()方法时,它都会移动到初始位置。当我尝试获取JFrame(getLocation,getLocationOnScreen)的位置时,无论我移动窗口,它仍然与初始位置相同。我用Awesome WM运行Archlinux。请帮忙。
感谢Uiii
编辑:我只想在主窗口中显示或隐藏某些组件(导致布局调整大小)而不将窗口移动到初始位置。
EDIT2:所以我发现Paŭlo(来自评论)是对的。它在Xfce中运行良好,但在Awesome WM中没有。
EDIT3:我真的不明白你为什么要投下这个问题。这是我第一次使用pack()函数,所以我不知道它的正确行为是什么。如果窗口的位置发生变化,java API文档中没有解释。我只是在Awesome WM中使用它作为我的窗口管理器,所以我不知道应该采取另一种方式。我试图在互联网上找到一些关于它的东西,但一无所获。我认为在我找到解决方案后,这个问题对某人有用。肯定有另外一些java开发人员正在使用Awesome WM(或类似的问题)。
答案 0 :(得分:2)
我找到了解决方案!问题是java在某些窗口管理器中存在一些问题。解决方案很简单 - 只需安装 wmname 实用程序(http://tools.suckless.org/wmname)并运行“wmname LG3D
”即可。它将实际窗口管理器的名称更改为LG3D,java将其视为兼容WM。
我在问题出现之前就已经知道了。所以我试图在.xinitrc文件中全局设置LG3D名称,但它看起来不起作用。我必须在每个运行一些java应用程序的终端中明确地调用“wmname LG3D
”。