2010-07-16 45 views
2

我正在創建一個從JPanel繼承的自定義Swing組件。在自定義Swing組件中獲取正確的大小調整行爲

什麼是覆蓋正道/實現各種大小的方法(的getPreferredSize,有必要對setPreferredSize,等的getMinimumSize),以獲得「良好行爲」,特別是關於:

  • 與不同的佈局工作經理
  • 正常運作時,有必要對setPreferredSize()被調用
  • 適當反應時的邊界通過setBorder()

回答

2

不讓我設置除非你的組件是幾個子組件的組合,否則從JPanel開始。在大多數情況下,從JComponent繼承就足夠了。

至於調整大小去...... 覆蓋getPreferredSizegetMinimumSizegetMaximumSize方法來獲得在佈局管理器適當的行爲。

如果您的組件在大多數情況下是子組件的組合,則首選大小已由您的子組件的組合定義,因此您不必重寫此組件。

+0

謝謝!看起來我可以在某些情況下直接從JComponent繼承,在其他情況下,我確實有一個組合,所以需要JPanel。有沒有關於如何實現getPrefferedSize,getMinimumSize等的指導?主要原因是這些和setPreferredSize,setBorder等之間的交互似乎可能非常複雜..... – mikera 2010-07-16 13:39:31

+0

這是什麼JComponent API SAIS:「如果preferredSize已設置爲非空值只是返回它。如果UI委託的getPreferredSize方法返回一個非空值,然後返回該值;否則,請遵循組件的佈局管理器「。 但是非常依賴LAF的IMO。所以我會建議在你的用戶界面中實現尺寸,然後委派一個代表用戶界面代表:) 就邊界而言,所有3種尺寸應該包含邊框尺寸,所以你不應該擔心它。 – 2010-07-16 13:49:50

+1

以下是關於由Kirrill編寫的自定義組件的非常好的文章:http://today.java.net/article/2007/02/19/how-write-custom-swing-component – 2010-07-16 13:53:23

0

雖然相當討厭:這取決於,在這種情況下的layoutmanager。通常佈局管理者可以最好的與constaints一起使用,以獲得良好的佈局。 我已經使用了GridBagLayout,並且在習慣了它之後,我發現它對每個組件使用正確的GridBagConstraint都很好。 有時候,一個優秀的視覺用戶界面設計師也可以提供幫助,例如Netbeans,或者您可以考慮支付一個像Swing DesignerJFormDesigner。可以節省您一些時間擺弄像素。

+0

很酷,感謝您的信息!我也發現MigLayout在這個reagrd中非常有用..... – mikera 2010-07-16 20:25:39

相關問題