2012-05-30 63 views
0

有沒有辦法通過單一因子縮放應用中的所有Swing組件?我有一個現有的Swing應用程序,我想以兩倍的大小顯示所有組件。這可能嗎?Java Swing:系統級組件的規模?

編輯:

我移植一個Java Swing應用程序,以糖(OLPC XO圖形環境)。我沒有輔助功能。該機器在7.5「顯示器上只有一個1200x900分辨率。所以這些組件非常小而且不可讀。

+2

*「這是可能的嗎?」*更好的問題是「做這件事有什麼意義?」如果用戶需要你的應用程序的組件。爲兩倍的大小,他們可以使用操作系統內置的輔助功能來實現這一點。該能力是免費的,獨立於您的應用程序。 –

+0

沒有全球比例因子。在目前的形式下,這個問題是無法回答的。請編輯您的問題以包含您想要完成的細節。 – trashgod

+0

@AndrewThompson請檢查編輯。這是你的觀點。 – Butaca

回答

2

不幸的是,在Swing中沒有這樣的標準功能。

應用程序中的每個組件大小由添加該組件的容器的佈局以及由其UI提供的組件的首選/最小大小確定。因此,最好的方式(就像我看到的那樣)是修改標準用戶界面,所以他們提供了額外的首選大小(在你的案例中翻倍)。但是你必須爲每種特定類型的組件(按鈕/複選框/表格/樹木/卷軸e.t.c)分別執行此操作。此外,您無法更改系統用戶界面 - 只能擴展一些跨平臺的外觀和感覺,例如Metal LaF,如果您使用原生的外觀和感覺,那麼它將毫無用處。

你可以改變,雖然一些默認大號&富力地產,如字體:

UIManager.put ("Button.font", new FontUIResource (new Font ("Arial", Font.BOLD, 20))); 

這種特定的情況下,僅僅改變按鈕字體。還有很多其他組件字體屬性,您可以在任何LookAndFeel類(例如BasicLookAndFeel)中找到它們。

+0

是否可以更改默認字體大小呢?感謝您的回答。 – Butaca

+0

使用'UIManger'修改[default](http://java.sun.com/products/jfc/tsc/articles/architecture/)外觀和感覺屬性當然是可能的。 – trashgod

+0

@trashgod您可以通過UIManager修改外觀和感覺屬性,但其中一些將不會被正確更新(即使在您完成完整的組件樹更新之後,因爲它們中的一些在首次調用後得到緩存)。此外,只有少數屬性會影響組件大小,並且它們不依賴於組件本身(例如,按鈕/文本域邊距),所以不能按照它們將組件大小加倍的方式來指定它們。 –

0

我不是專家,但只是一個想法。也許你可以子類有問題的部件,然後在重載的構造函數,你可以一個電話到

setBounds() 

setPreferredSize() 

不過我相信你會需要使用空佈局 爲此工作。

[請糾正我,如果我錯了!]

+0

@Butaca哦,然後你必須做一個全球性的重構。如果您使用IDE,這應該很容易。在NotePad ++或類似的東西中也應該很容易。 – yoonsi

+0

你[錯](http://stackoverflow.com/q/7229226/230513),空佈局不會幫助。 – trashgod

4
  • 可以通過使用Nimbus Look and Feel

  • 到scalling Swing的JComponents是非常複雜的修改雨雲大號&樓其ColorInsetsBounds EI,但以純形式,無任何問題

+0

啊,也許像[this](http://docs.oracle.com/javase/tutorial/uiswing/lookandfeel/size.html)? – trashgod

+0

@mKorbel謝謝,但我的組件不夠大。請檢查我的編輯。 – Butaca