2012-01-30 4 views
1

다른 레이아웃의 패널이 많은 자바 데스크톱 응용 프로그램을 하나 개발하고 있습니다. 이제 새로운 레이아웃을 패널로 설정하려고 할 때 항상 새로운 레이아웃을 만듭니다. E.G.데스크톱 응용 프로그램의 레이아웃

JPanel panel = new JPanel(new GridLayout(0, 1)); 

올바른 솔루션은 일부 LayoutFactory을 만들고 여기에 내가 필요하고 패널에 설정된 모든 레이아웃을 만들 수 있나요? 새로운 GridLayout(0, 1)에 의해 인 JPanel을 마련

+0

http://docs.oracle.com/javase/tutorial/uiswing/index.html –

+0

팩토리 필요 없음 (일부는 공유 할 수 없음) – kleopatra

+0

및 공유 할 수있는 레이아웃은 무엇입니까? E.G 프로젝트에서 flowLayout을 검색하면이 레이아웃의 인스턴스가 약 30 개 생성된다는 것을 알게되었습니다. – hudi

답변

2

1)이 경우에 당신은 Nested Layout 경우 컨테이너의 각에 의해 하나의 JComponent 전체 JPanel

2) 가장 쉬운 방법은 평신도 JComponents입니다 배치, BoxLayout를 사용하여 BorderLayout.CENTER와 동일하거나 가능해야한다 다른 LayoutManager, 같은 LayoutManager 또는 조합 GridBagLayout 또는 MigLayout이 가능 이용하여

3)() 대부분의 경우 전체 contai 시간마다 한 번씩 JComponents을 배치 할 수 있습니다 또는 JPanel

+0

# 1'GridLayout (0,1)'은'BorderLayout.CENTER'와 다릅니다. 그것은 하나의 열을 가진 레이아웃을 정의하고 요소가 추가 될 때 동등한 수의 행을 추가합니다. GridLayout (1,1)은 더 많은 요소가 추가 될 때 단 하나의 셀을 가지지 않는다. 동적으로 열을 추가한다. 'BoxLayout'는 다른 효과를 가지며, 컴포넌트의 크기를 변경하지 않습니다. # 3 JGoodies FormLayout은이 목적을위한 좋은 대안이기도합니다. –

0

hudi 코드를보다 간결하게 만들려면 레이아웃을 만들고 할당하는 도우미 메서드를 작성할 수 있습니다. 한 클래스에만 레이아웃을 설정하는 경우 도우미 메서드는 해당 클래스의 메서드가 될 수 있습니다. 또는 다양한 클래스에서 레이아웃을 설정하는 경우 공통 수퍼 클래스 (있는 경우)에 protected 도우미 메서드를 추가하거나 유틸리티 클래스에 static 메서드를 추가 할 수 있습니다.

코드 세부 정보를 게시하면보다 구체적인 제안을 할 수 있습니다.

관련 문제