如何将Java JFrame部分移出Linux桌面?

Eri*_*son 6 java linux swing gnome

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

当我使用JFrame.setBounds将界限设置为离屏幕一半的任何位置时,它实际上将帧的位置设置为尽可能接近指定的边界,同时仍然完全保留在屏幕上.

我如何告诉Java告诉GNOME实际将帧放在我指定的位置,即使它离屏幕一半?

下面是一些演示问题的示例代码,假设-50,50是屏幕外的.框架仍然可以通过标题栏拖出屏幕,但任何调用setLocationsetBounds不工作.

这在Windows中运行良好.

JFrame frame = new JFrame();
frame.setPreferredSize(new Dimension(200, 200));
frame.pack();
frame.setVisible(true);
frame.setLocation(-50, 50);

tra*_*god 3

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