2010-11-26 4 views
0

정수 목록의 요소를 가져 와서 레이블에 추가하고 하나씩 순서대로 인쇄하려고합니다. 나는 그것을 위해 다음과 같은 코드를 작성했다.자바 스윙 코드의 문제점

public static JFrame ListDraw(JFrame frame , ArrayList<Integer> e) 
{ 
    for(int i= 0;i<e.size();i++) 
    { 
     JLabel j = new JLabel(e.get(i).toString(),JLabel.CENTER); 
     frame.add(j); 
    } 
    return frame; 
} 

하지만 레이블에 마지막 배열 요소 만 인쇄합니다. 여기서 내가 뭘 잘못하고 있니?

--------------------- (업데이트)

이것은 단지 내가 같은 일에 관한 한 쿼리입니다. 그러므로 나는 여기서만 물어볼 것입니다. 세로 정렬 에서처럼 레이블 항목을 스택에 인쇄 할 수있는 방법이 있습니까? 지금은 모든 값을 가로로 인쇄합니다.

+0

귀하의 질문에 대답하지 않지만 API에 대해 약간의 호언 장담을해도 ... 귀하의 메소드가 JFrame을 반환하는 이유는 무엇입니까? 메소드가 인수 중 하나를 수정하려는 경우,이를 수정하십시오. JFrame을 반환하면 클라이언트가 제공 한 것과 어떻게 다른지를 알 수 있습니다. 이 경우 사실이 아닙니다. 무언가를 반환해야한다면 무효로 돌아가거나 성공/실패의 지표를 반환해야합니다. 또한 소문자를 사용하여 메서드 이름을 시작하십시오. –

+0

정말 고마워. :) 그래, 내가 아직 초보 프로그래머이기 때문에 그렇다. 매일 새로운 것을 배우게됩니다. 감사합니다 ... –

+1

레이블을 세로로 인쇄하려면 BoxLayout을 사용하고, 레이블의 너비를 동일하게하려면 GridLayout을 사용해보십시오. 이 설명서를 살펴보십시오. http://www.macs.hw.ac.uk/guidebook/?name=Layouts&page=1 – bancer

답변

3

프레임 레이아웃 f.ex : frame.setLayout(new FlowLayout());을 설정해야합니다.

+0

모든 프레임에는 다른 프레임이 지정되지 않은 경우 암시 적 FlowLayout이 있습니다. –

+0

아니요, 기본 레이아웃은 AFAIK입니다. 레이아웃 관리자가 도움이 될 것입니다. –

+0

레이아웃 설정이 도움이됩니다. BorderLayout ...이 기본값이되는 것 같습니다. 마지막 구성 요소 만 표시되는 이유는 –

1

프레임이 새로운 요소 그룹에 적용되지 않습니다. LayoutManager가 창 크기를 조정할 기회를 얻지 못하고 있습니다. 함수가 끝나면 frame.pack()을 추가하십시오.

+0

작동하지 않습니다. 그것은 여전히 ​​내게 마지막 요소를 제공하고 있습니다 .... –

+0

그래, 그냥 내 Mac에서 시도하고 단순히 frame.pack() 호출을 추가 충분하지 않습니다. – Jonik

0

setBounds()을 사용하여 프레임의 크기를 정의하고 원하는 LayoutManager를 지정해야합니다.