2013-03-23 3 views
0

Я создаю сетку, используя библиотеку DesignGridLayout java (here). в sampe, если создать 3 колонки.
используя этот код:Как создать динамическое значение JButton в библиотеке DesignGridLayout?

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); 
} 

это возвращение: Исключение в потоке «АВТ-EventQueue-0» java.lang.IllegalArgumentException: Не добавлять один и тот же компонент дважды

Моя цель для другого значения в каждом компоненте, который добавляется в панели, я хочу, чтобы создать галерею, заселить другое изображение, и я загрузить его изображения с помощью цикла, как это:

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

+0

Один из подходов - передать желаемый значок в качестве параметра фабричному методу 'button()'. – trashgod

0

Как упоминаемый @trashgod, Swing не позволяет дважды добавьте тот же компонент к панели. Если вы хотите добавить несколько компонентов, созданных в цикле, в той же строке, вы можете сделать это следующим образом:

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

Это создаст только одну строку с n кнопками внутри.

 Смежные вопросы

  • Нет связанных вопросов^_^