Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JFrame';s将位置和包装()放在Awesome WM中_Java_Swing_Position_Jframe_Awesome Wm - Fatal编程技术网

Java JFrame';s将位置和包装()放在Awesome WM中

Java JFrame';s将位置和包装()放在Awesome WM中,java,swing,position,jframe,awesome-wm,Java,Swing,Position,Jframe,Awesome Wm,每次我在JFrame上调用pack()方法时,它都会移动到启动时的初始位置。当我尝试获取JFrame的位置(getLocation,getLocationOnScreen)时,无论我移动窗口,它仍然与初始位置相同。我正在用很棒的WM运行Archlinux。请帮忙 谢谢你 编辑:我只希望能够在主窗口中显示或隐藏某些组件(这会导致布局调整),而无需将窗口移动到初始位置 EDIT2:所以我刚刚发现帕罗(来自评论)是对的。它在Xfce中运行良好,但在WM中则不行 EDIT3:我真不明白你为什么要否决这个

每次我在JFrame上调用pack()方法时,它都会移动到启动时的初始位置。当我尝试获取JFrame的位置(getLocation,getLocationOnScreen)时,无论我移动窗口,它仍然与初始位置相同。我正在用很棒的WM运行Archlinux。请帮忙

谢谢你

编辑:我只希望能够在主窗口中显示或隐藏某些组件(这会导致布局调整),而无需将窗口移动到初始位置

EDIT2:所以我刚刚发现帕罗(来自评论)是对的。它在Xfce中运行良好,但在WM中则不行


EDIT3:我真不明白你为什么要否决这个问题。这是我第一次使用pack()函数,所以我不知道它的正确行为是什么。java API文档中没有解释窗口的位置是否会改变。我只是在awesomewm中第一次使用它作为我的窗口管理器,所以我不知道它应该以另一种方式运行。我试图在网上找到一些关于它的东西,但什么也没找到。我认为,在我找到解决方案后,这个问题可能对某人有用。当然还有另外一些java开发人员正在使用awesomewm(或者类似的东西来解决同样的问题)。

我找到了解决方案!问题是java在一些窗口管理器上存在一些问题。解决方案很简单-只需安装wmname实用程序()并运行“
wmname LG3D
”。它将实际窗口管理器的名称更改为LG3D,java将其视为兼容WM.
我在遇到问题之前就知道这一点。因此,我试图在.xinitrc文件中全局设置LG3D名称,但它似乎不起作用。我必须在每个将运行一些java应用程序的终端中明确地调用“
wmname LG3D
”。

这听起来像是一个窗口管理器问题。pack()对打包根窗格的位置没有影响,只影响其大小。如果没有更多信息(显示问题的代码片段、操作系统、JDK版本…),我们将无法提供帮助。当我在从JFrame派生的类的任何方法中调用pack()时,就会发生这种情况。这个JFrame用于应用程序的主窗口。jfpoilpret:OS是Achrlinux,正如我在问题帖中提到的。JDK版本在1.6.0ŭ25中,我不知道还有哪些信息可以帮助我。所以我刚刚发现Paŭlo是正确的。它在Xfce中运行良好,但在Awesome WM中不起作用。如果这是您问题的解决方案,请将其标记为已接受的答案。