我使用從數據庫中讀取的動態內容填充GridBagLayout JPanel。我的問題是如果我能找到一種方法來設置最後一列權重爲1.0。 Usualy當我創建靜態GridBagLayout的面板,我可以做這樣的事情:GridBagLayout行權重
GridBagLayout gbl_accPanel = new GridBagLayout();
gbl_accPanel.columnWeights = new double[]{1.0};
gbl_accPanel.rowWeights = new double[]{0.0, 0.0, 0.0, 0.0, 1.0};
accPanel.setLayout(gbl_accPanel);
但現在,在我的情況,我不知道我有多少行都會有,所以我需要一種方法來推動所有的內容在頂部,這意味着使最後一行的權重爲1.0來填充我的容器的其餘部分。
很明顯,我可以保留一個計數我添加的元素,比設置rowWeights,比revalidate();重繪();但我不喜歡這種方式。那麼有沒有更好的方法?
這裏是一個圖片,如果我的問題不清楚:
什麼,我現在做的:
public void setAccountRowWeights(int n)
{
weights = new double[n];
for(int i=0; i<n-1; ++i)
weights[i] = 0.0;
weights[n-1] = 1.0;
gbl_accPanel.rowWeights = weights;
}
我可以將weighty = 1.0添加到最後一個組件,但它仍然很好,但我必須自己確定最後一個組件。我在考慮是否可以設置gridbaglayout,以便我的最後一個組件將始終自動填充容器的其餘部分。 – Chris
對我而言,問題仍不清楚。您是否希望所有組件對於給定記錄在「X軸」上佔據相同的空間?如果是的話,那麼你可以簡單地將組件的數量分成'1.0 /(double)noOfComponents',以獲得每個組件的'weightx'值。如果沒有,那麼你可以嘗試'GridBagConstraints.REMAINDER'作爲最後一個組件。雖然如果您可以提供所需的小圖,那可能對了解情況有更多的幫助:-) –