6

我正在编写一个带有可移动框架的 Java 应用程序,并且在 Linux 中遇到了一个怪癖。我在 CentOS 下运行 GNOME 2.16.0。

当我使用JFrame.setBounds将边界设置到屏幕一半之外的任何位置时,它实际上将框架的位置设置为尽可能接近指定的边界,同时仍完全保持在屏幕上。

我如何告诉 Java 告诉 GNOME 将框架实际放在我指定的位置,即使那是屏幕的一半?

这是一些演示问题的示例代码,假设 -50, 50 不在屏幕上。框架仍然可以通过标题栏拖出屏幕,但任何调用setLocationsetBounds不起作用。

这在 Windows 中运行良好。

JFrame 框架 = 新的 JFrame();
frame.setPreferredSize(新维度(200, 200));
框架.pack();
frame.setVisible(true);
frame.setLocation(-50, 50);
4

1 回答 1

3

我认为这在 Java 中是不可能的,但我很乐意被证明是错误的。我将其视为一项功能,旨在降低丢失窗户的风险。Mac OS X 和 Ubuntu 上也会发生类似的事情。这是修补的原始示例。也许有人可以在 Windows 上试用。

于 2010-03-24T02:23:53.927 回答