2011-03-16 25 views
1

我剛剛注意到,當我在第二個屏幕上最大化一個框架時 - 沒有任務欄 - 那麼它最終大約會出現如果任務欄在那裏。Java窗口在沒有任務欄的情況下沒有在屏幕上最大化使用物質LAF

我剛剛注意到這已切換到Windows 7.以前在Vista中,我有一個實用程序添加到兩個屏幕任務欄,所以這可能是一個問題,如果不是這樣的話。我敢肯定,這在Linux中並不是一個問題,我試過幾個窗口管理器...

如果我用默認的LAF運行我的程序,那麼展示正確的行爲(使用屏幕的整個水平空間)。我認爲StackOverflow並不是真正提交物質缺陷報告的最佳地點,但如果任何人都可以提出補救措施,或者確認它確實是一個錯誤並有助於確定它發生的情況,那麼將非常感激。

編輯:我剛剛通過源代碼挖掘了一下,發現一些對issue 213的引用;恰恰是我現在正在經歷的缺陷,這在當時(在2007年)被認爲是固定的,並且被報告在XP & Vista中正確地工作,具有當代版本(4.1)。我可能會嘗試在某個時候調試相關的代碼位;看起來相當易於管理。

/坦布爾韋德

回答

1

我要說,如果它僅與物質的LaF發生,那麼它肯定聽起來像你應該報告的錯誤......但我只看見自己的編輯,然後再發布。祝你好運,勸說他們在4年後解決它!

在此期間,您可以嘗試的唯一真正的解決方法是獲取當前顯示屏的插頁並設置尺寸。下面是一些代碼能夠統計出的分辨率,範圍和多少可用空間可用在每臺監視器的:

public static void main(String... args) throws Exception { 
     GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
     GraphicsDevice[] gds = ge.getScreenDevices(); 
     for (GraphicsDevice gd : gds) { 
      GraphicsConfiguration gc = gd.getDefaultConfiguration(); 
      System.out.println("Bounds = " + gc.getBounds()); 
      System.out.println("Insets = " + Toolkit.getDefaultToolkit().getScreenInsets(gc)); 
     } 
    }

在雙屏幕Windows安裝程序像我有,這說明如下:

Bounds = java.awt.Rectangle[x=0,y=0,width=1280,height=1024] 
Insets = java.awt.Insets[top=0,left=0,bottom=30,right=0] 
Bounds = java.awt.Rectangle[x=1280,y=0,width=1280,height=1024] 
Insets = java.awt.Insets[top=0,left=0,bottom=0,right=0]

注意在監視器1

底部的30像素的插圖現在,所有你需要做的工作是什麼屏幕運行應用程序上。如果您的應用程序窗口是JFrameWindow的任何其他子類,則可以使用Window.getGraphicsConfiguration()獲取活動屏幕的圖形配置。

我希望幫助(也許這將有助於對物質的bug工作的人!)

+0

感謝這麼多的回答(我是來條款與2個滾草徽章從連續2個問題的前景......寂寞的感覺!)。我不知道查詢插頁的正確方法。碰巧,我有一些類似的代碼讓窗口成爲​​全屏,我發現儘管邊界被設置爲整個屏幕的適當大小,但我也遇到了同樣的基本問題。無論如何,我需要現在去,但你的答案肯定是有幫助的。不幸的是物質現在沒有被維護,因爲這個人主要是在Android上工作。 – PeterT 2011-03-17 15:37:12

+0

順便說一句,我會給你一個upvote(不是一個接受,因爲它不是一個真正的答案,它看起來像我將捲起袖子,並修改物質來解決這個問題)......但我已經開始upvoting,現在系統不會讓我重新開始upvote,除非你編輯你的答案。 – PeterT 2011-03-24 10:52:23

+0

好的,我爲你做了一個不變的編輯。順便說一句,我相信這是你無法控制物質項目的人的最佳答案。對不起,這不是你想要的答案。 ;) – BoffinbraiN 2011-03-24 16:02:43

相關問題