2013-03-23 22 views
0

我使用DesignGridLayout java庫(here)創建網格佈局。 在sampe中創建3列布局。
使用此代碼:如何在DesignGridLayout庫中動態創建JButton值?

layout.row().add(new JButton("Button 1")).add(new JButton("Button 2")).add(new JButton("Button 3")); 

或使用方法,其返回對象:

layout.row().add(button()).add(button()).add(button()); 
... 
... 
public JButton button() { 
    return new JButton("Button"); 
} 

問題是,如何動態創建的JButton值?可能是名稱,圖標或任何東西?
我已經盡我自己的代碼是這樣的:

for (int i=0; i<4; i++) { 
     JButton button = new JButton(); 
    layout.row().add(button).add(button).add(button); 
} 

它返回: 異常在線程 「AWT-EventQueue的 - 0」 java.lang.IllegalArgumentException異常:不添加相同的組件兩次

我對於其中在面板的添加,我想創建庫用於填充 不同的圖像,以及i加載使用循環的圖像,這樣每個分量不同的值的目的:

for(int i=0; i<files.length; i++) { 
    ... 
    ImageIcon imgSource = new ImageIcon(new File(myPath)); 
    JLabel labelGallery = new JLabel(imgSource); 
    ... 
} 

任何解決方案?前 謝謝:)

回答

2

在你的榜樣,

layout.row().add(button).add(button).add(button); 

有企圖的相同JButton實例多次添加到該行的效果。

example cited

layout.row().grid().add(button()).add(button()); 

調用的輔助方法,button(),每個出現時間創建新的實例:

public static JButton button() { 
    return new JButton("Button"); 
} 
+0

那麼,我如何實現我的方法,其中每個JButton中有不同的圖標? – fanjavaid 2013-03-23 16:43:40

+0

一種方法是將所需圖標作爲參數傳遞給工廠方法'button()'。 – trashgod 2013-03-23 16:45:31

0

正如@trashgod提到的,搖擺不允許將相同的組件兩次添加到面板。 如果你想添加幾個組件,在一個循環中創建的,在同一行,你可以按如下做到這一點:

IRow row = layout.row().grid(); 
for (int i = 0; i < n; i++) { 
    JButton button = createButton(i); 
    row.add(button); 
} 

,將創建只有一行裏面n按鈕。