2016-11-14 87 views
0

所以,我對我們的項目這個現有的方法,它定義使用Dimension()小部件的寬度和高度:維度 - 內容被截斷

wProps.setBounds("Widget.frame.bounds", new Rectangle(WidgetStartPosition.getInstance().getStartPos(),new Dimension(getDefWidth(), getDefHeight()))) 

getDefWidth()getDefHeight()都檢索硬編碼值。

示例:int height = 360; int width = 210;

public void setBounds(String key, Rectangle r) 
{ 
    if (key == null || "".equals(key) || r == null) 
     return; 

    try 
    { 
     JSONObject jObject = new JSONObject(); 
     jObject.put(X, r.x); 
     jObject.put(Y, r.y); 
     jObject.put(WIDTH, r.width); 
     jObject.put(HEIGHT, r.height); 
     getLocalJSONObject().put(key, jObject); 
    } 
    catch (JSONException e) 
    { 
     e.printStackTrace(); 
    } 
} 

,因爲我注意到,如果新Dimension()的寬度和高度都硬編碼。然後,如果小部件的內容寬度大於新的Dimension()中定義的寬度,則內容將被截斷和剪切。 我想要做的是在Dimension()中設置值,具體取決於小部件內容每天都會發生變化的任何內容對應的總寬度和總高度。那可能嗎?

回答

0

請勿硬編碼任何Swing組件的寬度/高度值。每個組件負責確定其自己的大小,然後佈局管理員可以在確定面板上每個組件的大小/位置時完成其工作。

取決於總寬度和總高度的任何內容將是小部件

你需要重寫的getPreferredSize()方法對我想要做的就是在尺寸(設定值)你的組件。這是一個動態計算,只要組件的屬性發生變化就可以完成。

因此,隨着內容的變化,首選尺寸也會改變。想想像JLabel這樣的組件。隨着文本更改其首選大小更改。