我在我的Swing應用程序中調用getLocationOnScreen()
從JFrame
。如果JFrame
最小化爲-32000,則返回-32000。JFrame.getLocationOnScreen()用於最小化窗口
預計:
Location Coordinates On Computer Showing X=-32000, Y=-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
再次兩個或更多屏幕?或者從單顯示模式:-) – mKorbel
@mKorbel,是的,多屏幕。我更新了代碼。我使用'gcBounds.contains(loc)',如果'JFrame'被最小化,它就會失敗。 –