2011-10-07 22 views
0

我想構建一個具有2個窗口的應用程序。 第一個應該始終在第一個監視器中,並且不能最大化。 第二個應該在第二個監視器(一個完美的例子就像PowerPoint的演示模式)中啓動,運行在任何其他應用程序窗口的「頂部」,並始終最大化。這個窗口是使用給第一個窗口的監聽器啓動的。 請注意,這些「顯示器」可能是演示中使用的LCD投影儀,或者是真實的臺式電腦顯示器。如何在多個監視器配置中部署JFrame

我知道存在GraphicsEnvironment API,我們可以知道我們的監視器配置是作爲單個監視器處理還是單獨處理。但是,我不知道如何實施它。我的意思是,由於屏幕配置可以根據其圖形卡進行不同處理,我們如何驗證它們?例如,如果有3個顯示器被視爲具有大分辨率的單個顯示器,那麼也許我們可以將第二個窗口的座標x0設置爲:total_width * 2/3。 但是,如果將其視爲單獨顯示顯示器..?

謝謝。

+1

你看看這個鏈接:http://download.oracle.com/javase/1.3/docs/guide/2d/spec/j2d-awt.fm6.html,這可能有幫助。它的確很古老,但是你可以在新的java版本中找到類似的東西 – doNotCheckMyBlog

+3

我認爲,即使多個顯示器被視爲「一個」,因爲顯示的內容在所有顯示器上都會傳播,因爲它會在一個顯示器上巨大的顯示器,您仍然可以單獨獲取每個顯示器:GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment(); GraphicsDevice [] gs = ge.getScreenDevices();然後使用gs [i] .setFullScreenWindow(myJFrame)將你的框架設置在你想要的屏幕上; –

+0

哇..感謝您的快速回復。我會嘗試他們^^ – Keith

回答

2

@Zecas:是的,它運作良好。對不起,沒有在這裏發佈答案。我完全忘了。 因此,該解決方案是完全一樣的東西ShivanDragon曾表示,我們可以單獨通過先獲取我們的GraphicsEnvironment中獲取每個監視器,然後從環境讓我們的屏幕設備:

GraphicsEnvironment ge = GraphicsEnvironment .getLocalGraphicsEnvironment(); 
GraphicsDevice[] gs = ge.getScreenDevices(); 

之後,只需使用:

gs[_screen_index].setFullSCreenWindow(_frame) 
+0

不幸的是,我似乎無法得到這個在Ubuntu Linux上爲我工作..與Nvidia視頻卡..不知道是否我的特定問題與如何配置我的顯示器X或許不會將Java看作離散顯示或者沿着這些線顯示的東西。 –

相關問題