Extjs의 레이아웃 - 학습(예)

레이아웃이란 용기 구성 요소에서 하위 요소의 분포, 배열 조합 방식을 가리킨다.Ext의 모든 용기 구성 요소는 사이드 조작을 지원합니다. 모든 용기는 대응하는 레이아웃을 가지고 레이아웃은 용기 구성 요소의 하위 요소의 배열, 조합 및 렌더링 방식 등을 관리합니다.ExtJS의 레이아웃 기본 클래스는 Ext.layout입니다.ContainerLayout, 다른 레이아웃은 이 클래스를 계승합니다.ExtJS의 용기 구성 요소는 layout 및layoutConfig 설정 속성을 포함하고 있습니다. 이 두 가지 속성은 용기가 사용하는 레이아웃과 레이아웃에 대한 상세한 설정 정보를 지정하는 데 사용됩니다. 용기 구성 요소를 지정하지 않은 레이아웃은 기본적으로containerLayout을 레이아웃으로 사용합니다. 이 레이아웃은 간단하게 용기에 요소를 넣을 뿐입니다. 어떤 레이아웃은layoutConfig 설정을 필요로 하고, 어떤 것은layoutConfig 설정을 필요로 하지 않습니다.코드 보기:
Ext.onReady(function(){	
	new Ext.Panel({
		renderTo:"hello",
		width:400,
		height:200,
		layout:"column",
		items:[{columnWidth:.5,
				title:" 1"},
		  	   {columnWidth:.5,
		  		title:" 2"}]
	});
	 });

위의 코드에서 우리는 패널 패널을 만들었습니다. 패널은 용기 구성 요소입니다. 이 패널은 Column 레이아웃을 사용하도록 layout을 사용합니다.이 패널의 하위 요소는 두 개의 패널입니다. 이 두 패널은 열 레이아웃과 관련된 설정 매개 변수 속성인columnWidth를 포함하고 있습니다. 그들의 값은 0.5입니다. 즉, 모든 패널이 절반의 폭을 차지합니다.위의 프로그램을 실행하여 다음 그림과 같은 결과를 생성합니다.
ext의 일부 용기 구성 요소는 이미 사용된 레이아웃을 지정했다. 예를 들어 TabPanel은 카드 레이아웃을 사용하고,FormPanel은form 레이아웃을 사용하고,GridPanel의 표는column 레이아웃을 사용한다. 우리는 이 구성 요소를 사용할 때 이 용기 구성 요소에 다른 레이아웃을 지정할 수 없다.ExtJS2.0은 모두 10가지 레이아웃을 포함하고 자주 사용하는 레이아웃은border,column,fit,form,card,tabel 등 레이아웃이 있습니다. 다음은 이 몇 가지 레이아웃에 대해 간단하게 소개합니다.
Border 영역 레이아웃
 
Border 레이아웃은 클래스 Ext.layout입니다.BorderLayout 정의, 레이아웃 이름은 border입니다.이 레이아웃은 용기를 동남서북의 다섯 구역으로 나누어 각각 east,south,west,north,cente로 표시한다. 용기에 하위 요소를 추가할 때 우리는 이 하위 요소가 있는 위치만 지정하면 Border 레이아웃은 자동으로 하위 요소를 레이아웃이 지정한 위치에 놓는다.다음 코드를 참조하십시오.
Ext.onReady(function(){ 

new Ext.Viewport({

layout:"border",

items:[{region:"north",

height:50,

title:" "},

{region:"south",

height:50,

title:" "},

{region:"center",

title:" "},

{region:"west",

width:100,

title:" "},

{region:"east",

width:100,

title:" "}

]

}); 


});

위의 코드를 실행하면 다음 그림과 같이 상하좌우 다섯 영역이 포함된 패널이 페이지에 출력됩니다.
 
 
 
열 레이아웃은 Ext.layout입니다.ColumnLayout 클래스 정의, 이름은 column입니다.열 레이아웃은 전체 용기 구성 요소를 하나의 열로 보고 그 안에 하위 요소를 넣을 때, 하위 요소에서columnWidth나width를 사용하여 하위 요소가 차지하는 열의 폭을 지정할 수 있습니다.columnWidth는 백분율의 형식으로 열의 폭을 지정하고,width는 절대 화소 방식으로 열의 폭을 지정하여 실제 응용에서 두 가지 방식을 혼합하여 사용할 수 있다.다음 코드를 참조하십시오.
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

layout:"column",

width:500,

height:100,

items:[{title:" 1",width:100},

{title:" 2",width:200},

{title:" 3",width:100},

{title:" 4"}

]

}

);

});

위의 코드는 용기 구성 요소에 네 개의 요소를 넣고 용기 구성 요소에 4열을 형성하며 열의 너비는 각각 100200100과 나머지 너비이며 실행 결과는 아래 그림과 같다.
또한 columnWidth를 사용하여 하위 요소가 차지하는 열의 폭을 정의할 수 있습니다. 다음 코드를 보십시오.
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

layout:"column",

width:500,

height:100,

items:[{title:" 1",columnWidth:.2},

{title:" 2",columnWidth:.3},

{title:" 3",columnWidth:.3},

{title:" 4",columnWidth:.2}

]

}

);

});

columnWidth의 합계는 1이어야 하며, 실행 코드는 다음 그림과 같은 내용을 생성합니다.
실제 응용 프로그램에서도 혼합하여 사용할 수 있습니다. 아래의 코드를 보십시오.
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

layout:"column",

width:500,

height:100,

items:[{title:" 1",width:200},

{title:" 2",columnWidth:.3},

{title:" 3",columnWidth:.3},

{title:" 4",columnWidth:.4}

]

}

);

});

위의 코드를 실행하면 다음 그림과 같은 결과가 생성됩니다.
 
배치 맞추기
열 레이아웃은 Ext.layout입니다.ColumnLayout 클래스 정의, 이름은 column입니다.열 레이아웃은 전체 용기 구성 요소를 하나의 열로 보고 그 안에 하위 요소를 넣을 때, 하위 요소에서columnWidth나width를 사용하여 하위 요소가 차지하는 열의 폭을 지정할 수 있습니다.columnWidth는 백분율의 형식으로 열의 폭을 지정하고,width는 절대 화소 방식으로 열의 폭을 지정하여 실제 응용에서 두 가지 방식을 혼합하여 사용할 수 있다.다음 코드를 참조하십시오.
Ext.onReady(function(){	
	new Ext.Panel({
		renderTo:"hello",
		title:" ",
		layout:"column",
		width:500,
		height:100,
		items:[{title:" 1",width:100},
		       {title:" 2",width:200},
			   {title:" 3",width:100},
			   {title:" 4"}
		]
	}
	);
	 });

 
위의 코드는 용기 구성 요소에 네 개의 요소를 넣고 용기 구성 요소에 4열을 형성하며 열의 너비는 각각 100200100과 나머지 너비이며 실행 결과는 아래 그림과 같다.
Fit 레이아웃을 사용한 코드를 보면 다음과 같습니다.
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

layout:"fit",

width:500,

height:100,

items:[{title:" ",html:" "}

]

}

);

});

위의 코드는 부모 용기가 Fit 레이아웃을 사용하도록 지정하기 때문에 자식이 자동으로 전체 부모 용기를 채웁니다.내보낸 도면은 다음과 같습니다.
컨테이너 구성 요소에 하위 요소가 여러 개 있는 경우 다음 코드와 같은 요소만 표시됩니다.
 
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

layout:"fit",

width:500,

height:100,

items:[{title:" 1",html:" 1 "},

{title:" 2",html:" 2 "}

]

}

);

});

결과는 다음과 같습니다.
레이아웃 Fit을 사용하지 않는 경우 코드는 다음과 같습니다.
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

width:500,

height:120,

items:[{title:" 1",html:" 1 "},

{title:" 2",html:" 2 "}

]

}

);

});

출력 결과는 다음 그림과 같습니다.
 
Form 레이아웃
Form 레이아웃은 클래스 Ext.layout을 사용합니다.FormLayout은 폼이라는 이름으로 폼에 입력된 필드를 관리하는 레이아웃입니다. 이 레이아웃은 프로그램에서 폼 필드나 폼 요소를 만드는 데 주로 사용됩니다.다음 코드를 참조하십시오.
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

width:300,

layout:"form",

hideLabels:false,

labelAlign:"right",

height:120,

defaultType: 'textfield',

items:[

{fieldLabel:" ",name:"name"},

{fieldLabel:" ",name:"address"},

{fieldLabel:" ",name:"tel"}

]

}

);

});

위의 코드는 패널을 만들었습니다. 패널은 Form 레이아웃을 사용합니다. 패널에는 세 개의 하위 요소가 포함되어 있습니다. 이 하위 요소는 모두 텍스트 상자 필드입니다. 부모 용기에서hideLabels,labelAlign 등 설정 속성을 통해 라벨을 숨길지, 라벨 정렬 방식 등을 정의합니다.위 코드의 출력 결과는 다음 그림과 같습니다.
다음 그림과 같이 컨테이너 구성 요소에서hideLabels를true로 설정하면 컨테이너의 필드 레이블이 표시되지 않습니다.
실제 응용 프로그램에서 Ext.form.FormPanel 클래스의 기본 레이아웃은 Form 레이아웃을 사용하고 FormPanel은
레이블과 관련된 구성 요소이므로 일반적으로 FormPanel을 직접 사용하면 됩니다.위의 예는 다음과 같은 형식으로 고칠 수 있다.
Ext.onReady(function(){ 

new Ext.form.FormPanel({

renderTo:"hello",

title:" ",

width:300, 

labelAlign:"right",

height:120,

defaultType: 'textfield',

items:[

{fieldLabel:" ",name:"name"},

{fieldLabel:" ",name:"address"},

{fieldLabel:" ",name:"tel"}

]

}

);

});

프로그램 결과는 앞에서 Ext.Panel을 사용하고 form 레이아웃을 지정한 것과 같습니다. 아래 그림과 같습니다.
 
Accordion 레이아웃
Accordion 레이아웃은 클래스 Ext.layout을 사용합니다.Accordion은 접을 수 있는 레이아웃을 나타내는 accordion이라고 정의합니다. 즉, 이 레이아웃을 사용하는 용기 구성 요소의 하위 요소는 접을 수 있는 형식입니다.다음 코드를 참조하십시오.
Ext.onReady(function(){ 

new Ext.Panel({

renderTo:"hello",

title:" ",

width:500,

height:200,

layout:"accordion",

layoutConfig: {

animate: true 

},

items:[{title:" 1",html:" 1 "},

{title:" 2",html:" 2 "},

{title:" 3",html:" 3 "}

]

}

);

});

위의 코드는 용기 구성 요소를 정의하고 Accordion 레이아웃을 사용하도록 지정합니다. 이 용기 구성 요소에는 세 개의 하위 요소가 포함되어 있으며, layoutConfig에서 레이아웃 설정 매개 변수인animate를true로 지정하여 확장 접기를 실행할 때 애니메이션 효과를 적용할지 여부를 나타냅니다.실행 결과는 다음 그림과 같은 인터페이스를 생성합니다.
각 하위 요소의 머리 이름 또는 오른쪽 버튼을 클릭하면 패널이 확장되고 다음 그림과 같이 확장된 다른 패널이 축소됩니다.
 
카드 레이아웃
카드 레이아웃은 Ext.layout입니다.CardLayout 클래스는 card라고 정의합니다. 이 레이아웃은 용기 구성 요소에서 어느 순간에 하위 요소만 표시합니다.설치 마법사, Tab 팔레트 등 응용 프로그램의 패널 디스플레이에 대한 요구를 충족시킬 수 있습니다.다음 코드를 참조하십시오.
Ext.onReady(function(){ 

var panel=new Ext.Panel({

renderTo:"hello",

title:" ",

width:500,

height:200,

layout:"card",

activeItem: 0,

layoutConfig: {

animate: true 

},

items:[{title:" 1",html:" 1 "},

{title:" 2",html:" 2 "},

{title:" 3",html:" 3 "}

],

buttons:[{text:" ",handler:changeTab}]

}

);

var i=1;

function changeTab()

{ 

panel.getLayout().setActiveItem(i++); 

if(i>2)i=0;

}

});

위의 코드는 용기 구성 요소 패널을 만들었습니다. 패널에는 세 개의 하위 패널 요소가 포함되고, 부모 용기에는'전환'단추가 포함되어 있습니다. 이 단추를 누르면changeTab 함수를 실행합니다. 이 함수는 부모 용기의 활성 패널을 세 개의 하위 요소 사이에서 교체합니다.프로그램의 실행 결과는 다음과 같습니다.
전환 버튼을 클릭하면 다음 그림과 같이 결과가 표시됩니다.
 
table 레이아웃 및 기타 레이아웃
Table 레이아웃은 클래스 Ext.layout을 사용합니다.TableLayout은 table라고 정의합니다. 이 레이아웃은 용기의 하위 요소를 일반 html 라벨과 유사하게
Ext.onReady(function(){ 

var panel=new Ext.Panel({

renderTo:"hello",

title:" ",

width:500,

height:200,

layout:"table", 

layoutConfig: {

columns: 3 

},

items:[{title:" 1",html:" 1 ",rowspan:2,height:100},

{title:" 2",html:" 2 ",colspan:2},

{title:" 3",html:" 3 "},

{title:" 4",html:" 4 "}

]

}

);

});
위의 코드는 부모 용기 구성 요소를 만들었습니다. 테이블 레이아웃을 사용하고layoutConfig는columns를 사용하여 부모 용기를 3열로 나누고, 하위 요소에서rowspan이나colspan을 사용하여 하위 요소가 가로지르는 셀 수를 지정합니다.프로그램의 실행 효과는 아래 그림과 같다. 앞에서 소개한 몇 가지 레이아웃을 제외하고 Ext2.0에는 다른 Ext.layout도 포함되어 있다.AbsoluteLayout、 Ext.layout.AnchorLayout 등 레이아웃 클래스는 주로 다른 레이아웃의 기본 클래스로 사용되며 일반적인 상황에서 우리는 응용에서 직접 사용하지 않습니다.또한 우리는 10가지 레이아웃 유형의 하나를 계승하여 사용자 정의 레이아웃을 실현할 수 있다.

좋은 웹페이지 즐겨찾기