2009-10-05 118 views
2

我想創建一個自定義的JComponent(特別定製JToggleButton中)具有自定義外觀。我想要做的只是覆蓋組件的默認繪畫和繪製我自己的東西(例如圖像)搖擺custon JComponent的大小

這是不是如何做到這一點(我對Java2D相當精通) 。我想問的是我必須採取哪些措施來確保我的組件具有我希望的尺寸?

到目前爲止,我也做了測試是有問題的。我畫了一幅圖像,可以說200 * 100像素,佈局管理器只顯示我的組件的一部分。我嘗試過setSize,setPrefferedSize,setMinimumSize,但都沒有工作。

回答

4

有在Swing模型,你會被給予的空間中一組量完全保證沒有辦法 - 佈局管理器可以做忽略最小和最大尺寸,儘管通常他們只忽略一個或另一個。

如果您有一個固定大小的組件,則應該覆蓋getMinimumSize,getPreferredSizegetMaximumSize以返回所需的固定大小的維度。如果您可以根據需要調整最小值和最大值。重寫方法避免了一些第三方的代碼調用set*Size方法和覆蓋你的選擇(佈局管理器將仍然稱setSize告訴什麼大小是實際分配這是正常的部件)。它還確保在佈局管理器開始佈置組件之前設置大小。

如果在佈局發生後組件的大小可能發生變化,您需要確保正確地使組件佈局無效,但是如果可以的話避免這樣做。

2

大小由LayoutManager的確定。如果您將使用空的LayoutManager,您將能夠強制指定大小(和位置)。否則你可以重載getPreferedSize(),這將被一些佈局管理員所尊重。

+0

我沒有覆蓋getPrefferedSize,我也嘗試簡單地設置首選大小,這些方法都沒有奏效。什麼是在Swing中設置組件大小的「正確」方法?揮杆隊怎麼做?正如我所說的, – 2009-10-05 14:29:05

+0

,LayoutManager使用getPreferredSize()。這可能會決定忽略它。要完全控制組件的大小,需要爲包含該按鈕的容器使用特定的佈局管理器(使用null佈局+ setSize(w,h)來強制指定大小)。 – 2009-10-05 14:58:22