我getLocationOnScreen()
在JFrame
我的 Swing 应用程序中调用。如果JFrame
最小化 -32000,则返回 -32000。
预计:
但是我需要在窗口被最小化之前知道它的位置,或者如果它再次最大化而没有实际最大化它就会是该位置。因为即使它被最小化,我也需要JDialog
相对定位。JFrame
可能的解决方案:
添加WindowListener
到事件JFrame
并windowIconified()
保存坐标。然后用它代替getLocationOnScreen()
.
JFrame
仅使用方法有更好的解决方案吗?
需要多屏配置,并使用以下代码。
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for (int j = 0; j < gs.length; j++) {
GraphicsDevice gd = gs[j];
GraphicsConfiguration[] gc = gd.getConfigurations();
for (int i = 0; i < gc.length; i++) {
Rectangle gcBounds = gc[i].getBounds();
Point loc = topContainer.getLocationOnScreen(); //might return -32000 when minimized
if (gcBounds.contains(loc)) { //fails if -32000 is returned