2013-03-23 2 views
0

DesignGridLayout 자바 라이브러리 (here)을 사용하여 그리드 레이아웃을 만듭니다. sampe if create 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"예외 : 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

한 가지 방법은 매개 변수로 원하는 아이콘을 factory 메소드 인 'button()'에 전달하는 것입니다. – trashgod

0

@trashgod에서 언급 한 바와을 스윙하는 것을 허용하지 않습니다 동일한 구성 요소를 패널에 두 번 추가하십시오. 당신은 루프 내에서 생성 된 여러 구성 요소를 추가하려면 다음과 같이 동일한 행에, 당신이 그것을 할 수 있습니다 : 내부 n 버튼을 하나 개의 행을 작성합니다

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

.

관련 문제