-1

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

谢谢 Uiii

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

EDIT2:所以我刚刚发现Paŭlo(来自评论)是正确的。它在 Xfce 中运行良好,但在 Awesome WM 中却不行。

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

4

1 回答 1

2

我找到了解决方案!问题是java对一些窗口管理器有一些问题。解决方案很简单 - 只需安装wmname实用程序 ( http://tools.suckless.org/wmname ) 并运行 ' wmname LG3D'。它将实际窗口管理器的名称更改为 LG3D,java 将其视为兼容的 WM。

在我遇到问题之前我就知道这一点。所以我试图在 .xinitrc 文件中全局设置 LG3D 名称,但它看起来不起作用。我必须wmname LG3D在每个将运行一些 Java 应用程序的终端中显式地调用“”。

于 2011-05-22T13:11:18.520 回答