2021/01/11 - [처음배우는 IT] - 자바프로그래밍 언어: AWT <1>

 

자바프로그래밍 언어: AWT <1>

자바에서의 GUI 프로그래밍 기법을 익히고 제작해 본다. AWT의 기본 개념 및 구조를 알아본다. 자바에서 제공하는 컴포넌트 및 배치 관리자에 대해 알아본다. 1. GUI 프로그래밍이란 G

peperomia.tistory.com

 

자바프로그래밍 언어: AWT <2>

 

8. 기본 Component : Button

버튼을 사용자가 눌렸을 때 특정한 액션을 실행할 수 있도록 만든 컴포넌트이다. 

 

Button 클래스의 주요생성자

Button( ) : 비어 있는 버튼 객체를 생성한다.

Button(String lable) : lable을 지정하여 버튼 객체를 생성한다

Button 클래스의 주요 메서드

반환형 void 메서드 addActionListener(ActionListener l) : 버튼으로부터 액션 이벤트를 받기 위해 지정된 액션 리스너를 추가한다.

반환형 String 메서드 getActionCommand( ) : 버튼에서 발생되는 액션 이벤트의 커맨드명을 얻어온다. 메서드 getLabel( ) : 버튼의 레이블을 얻어온다

반환형 void 메서드 setLabel(String label) : 버튼의 레이블을 지정한 label로 설정한다.

 

9. 기본 Component : Checkbox

사용자가 여러 종류의 옵션을 선택할 것인지의 여부를 지정할 때 사용한다 . 
여러 개의 체크박스를 묶어 하나의 그룹으로 만들어 그룹내에서는 하나만이 값을 유지할 수 있는 라디오 버튼 형태로도 사용할 수 있는 컴포넌트이다. 
그룹으로 묶을 때는 CheckboxGroup 클래스를 사용한다.

 

Checkbox 클래스의 주요 생성자

Checkbox( ) : label이 없는 체크박스 객체를 생성한다

Checkbox(String label) : 지정된 label을 가지는 체크박스 객체를 생성한다.

Checkbox(String label, Boolean state) : 지정된 label과 지정된 state를 넣어서 체크박스 객체를 생성한다

Checkbox(String label, Boolean state, ChekckboxGroup group) : 지정된 label, 지정된 state를 넣어, 지정된 group에 속하는 체크박스 객체를 생성한다.

Checkbox 클래스의 주요 메서드

반환형 void 메서드 addItemListener(ItemListener I) : 체크박스로부터 아이템 이벤트를 받기 위해 지정된 아이템 리스너를 추가한다. 메서드 setLabel(String label) 체크박스의 레이블을 지정한다.

반환형 String 메서드 getLabel( ) : 체크박스의 레이블을 얻어온다.

반환형 void 메서드 setState(boolean state) : 체크박스 상태를 지정된 상태로 설정한다.

반환형 boolean 메서드 getState( ) : 체크박스가 'On' 또는 'Off' 상태인지를 얻어온다

반환형 void 메서드 setCheckboxGroup(CheckboxGroup g) : 체크박스 그룹을 지정한다

 

10. 기본 Component : Choice

List 클래스와 거의 유사한 기능을 가지고 있는 컴포넌트로 사용자가 드롭-다운 버튼을 사용하여 여러 아이템 중에 하나를 선택할 수 있는 기능을 제공한다. 
컴포넌트를 생성한 후에 드롭-다운 리스트에 항목에 추가시켜 사용한다. 

 

Choice 클래스의 생성자

생성자 Choice( ) : 새로운 선택 메뉴 객체를 생성한다.

Choice 클래스의 주요메서드

반환형 void

메서드

add(String item) : Choice 메뉴에 항목을 추가한다.

addItemListener(ItemListener I) Choice메뉴로 부터 아이템 이벤트를 받기 위해 지정된 아이템 리스너를 추가한다. insert(String item, int index) Choice에 지정된 위치에항목 삽입한다.

remove(int position) : Choice 메뉴에 지정한 위치에 있는 항목을 제거한다.

remove(String item) : Choice 메뉴로부터 item이 첫 번째로 발견된 항목을 제거한다.

removeAll( ) : Choice 메뉴로부터 모든 item을 제거한다.

 

11. Label 

사각형의 영역에 문자열을 표시할 때 사용하는 컴포넌트이다. 
레이블은 경계선이 없고 특별한 상태를 가지지도 않는다.  그러므로 레이블을 컨테이너에 포함시키게 되면 레이블의 문자만 화면에 표시가 된다. 
레이블의 문자열은 좌, 우, 중앙으로 정렬시킬 수 있다.

 

12. List 

Choice와 유사한 기능이지만 여러 개의 항목을 보여주고 사용자가 하나 또는 여러 개의 항목을 선택할 수 있도록 지원하는 컴포넌트이다. 
기본적으로는 하나의 항목만을 선택할 수 있지만 MultipleMode를 설정하면 한번에 여러 개의 항목을 선택할 수 있다.

 

13. Canvas  

특정한 모양을 갖고 있지 않고 단지 사각형의 영역만을 갖고 있는 컴포넌트이다. 
이 컴포넌트는 그림을 그릴 수 있는 도화지의 역할을 하는 컴포넌트로 컨테이너에 포함되어 그래픽 처리를 할 수 있다. 

 

14. 텍스트 Component 

텍스트를 다루는 클래스의 super 클래스로 텍스트를 처리하는 각종 메서드를 가지고 있다. 
독립적으로는 생성되지 못한다. 

TextComponent 클래스의 하위 클래스

TextField : 문자 한 줄만 입력받을 때 사용한다.

TextArea : 여러 줄의 문자를 입력받을 때 사용한다.

 

TextField 
한 줄 내의 텍스트를 입력 받거나 편집할 수 있는 컴포넌트이다. 
한 줄에 표시할 수 있는 컬럼수를 지정할 수 있고 반향 문자(Echo Character)를 지정하면 입력되는 문자대신 반향 문자로 지정한 문자로 출력된다. 

 

TextArea 
여러 줄의 텍스트를 사용자로부터 입력받거나 편집할 수 있는 컴포넌트이다. 
화면에 출력되는 영역이 벗어나면 스크롤바 표시 방식에 따라 자동으로 스크롤바가 생성된다. 
사용자가 필요에따라 일부 스크롤바만 나타나게 할 수도 있다. 

 

15. 메뉴 Component 

메뉴는 보통 최상위 레벨의 윈도우 타이틀바 아래에 존재하는 것으로 사용자가 프로그램의 기능을 선택할 수 있도록 해주는 기능을 가지고 있는 컴포넌트이다. 
메뉴의 구성은 MeunBar, Menu, MenuItem으로 구성된다.

MenuComponent 클래스의 하위 클래스

MenuBar 메뉴를 올려 놓을 수 있는 메뉴바를 만들 때 사용한다

Menu 메뉴바에 올여 놓을 수 있는 메뉴를 만들 때 사용한다

MenuItem 메뉴의 하위 메뉴를 만들때 사용한다

CheckboxMenuItem 체크박스가 들어 있는 메뉴아이템을 만들 때 사용한다

PopupMenu 동적으로 표현할 수 있는 메뉴를 만들 때 사용한다

 

메뉴 사용법

1. 메뉴바 객체를 생성한다.

MenuBar mb = new MenuBar();

2. 메뉴바에 삽입할 메뉴를 생성한 후 메뉴를 메뉴바에 붙인다.

Menu menu_file = new Menu(“파일”); mb.add(menu_file);

3. 메뉴에 붙일 메뉴아이템을 생성한 후 해당 메뉴에 붙인다.

MenuItem menu_file_new = new MenuItem(“새문서”); Menu_file.add(menu_file_new);

4. 메뉴바를 윈도우에 붙인다.

setMenuBar(mb);

 

16. LayoutManager 

컨테이너는 자기 자신에 컴포넌트를 붙일 때 어디에, 어떤방식으로 배치하여 붙일것인가를 이미 결정하고 있다. 
즉, 미리 정해진 레이아웃에 따라 컴포넌트들을 자동으로 배치하는 기능을 가지고 있는 객체를 컨테이너들은 가지고 있는데 이것을 배치관리자(LayoutMananger)라 한다. 
자바에서 사용하는 배치관리자는 FlowLayout, BorderLayout, GridLayout, GridBagLayout, CardLayout의 5가지가 있다. 
배치관리자는 각자 다른 방식으로 배치기능을 가지고 있으며 컨테이너는 기본적으로 하나의 배치관리자를 가지고 있다. 
사용자가 임의로 배치관리자는 다시 설정할 수 있으며 배치관리자를 제거하고 수동으로 좌표를 이용해서 배치할 수도 있다. 

 

17. FlowLayout  

컴포넌트들을 수평으로 순서대로 늘어놓는 배치 기능을 가지고 있다. 
처음에 배치를 하게되면 상단, 중앙부터 배치가 되는데 배치를 하다가 더 이상 배치할 공간이 없으면 자동으로 다음 줄로 이동하여 배치하게 된다. 
컴포넌트를 배치할 때 컴포넌트의 간격을 갭(gap)이라고 하는데 컴포넌트들 사이의 수평, 수직간 간격을 설정할 수 있다. 

 

18. BorderLayout   

컨테이너의 영역을 5개의 영역으로 분할하여 컴포넌트를 배치하는 관리자이다.  
기본적으로 컴포넌트를 BorderLayout에 붙일 때 아무런 영역을 지정하지 않은경우는 기본적으로 CENTER영역에 붙이게 된다. 
CENTER영역은 다른영역에 아무것도 존재하지않으면 그 영역까지 포함해서 영역이 잡히게 된다. 
SOUTH, NORTH영역은 컴포넌트의 높이는 제대로 나타나지만 폭의 길이는 인정되지 않는다. 
WEST, EAST영역은 컴포넌트의 폭의 길이는 제대로 나타나지만 높이는 제대로 인정되지 않고 항상 그 영역의 길이만큼 잡히게 된다. 

 

19. GridLayout   

격자모양(모눈종이와 같은 모양)과 같이 가로와 세로가 같은 크기의 비율로 나누어 각 공간(셀)에 컴포넌트을 배치할 수 있는 관리자이다.
GridLayout 배치 관리자를 만들 때 행과 열의 수를 지정하는데, 값은 0이상의 값으로 지정하며 만약 0으로 지정하게 되면 무한대로 컴포넌트를 추가하여 붙일 수 있다. 
행과 열의 수하고 붙이는 컴포넌트의 수가 더 많은 경우는 행의 수를 우선으로 맞춘다. 

 

20. GridBagLayout   

GridLayout과 유사한 기능을 제공하는 배치 관리자로 가장 복잡한 구조를 가지고 있다. 
GirdLayout은 하나의 셀에는 하나의 컴포넌트를 가질 수 있는데 GridBagLayout은 여러 셀에 걸쳐서 서로 다른 크기와 간격으로 하나의 컴포넌트가 배치될 수 있다. 
GridBagLayout을 사용하는 경우는 GridBagConstraints 클래스를 더 사용하여 배치를 시킨다. 
GridBagConstraints 클래스는 GridLayout으로 지정된 컨테이너에 컴포넌트가 얼마만클의 영역을 차지하여 배치할 것인가에 대한 자세한 영역 구조에 대해 지정을 한다. 

 

21. CardLayout     

여러 개의 카드를 쌓아둔 것 처럼 컴포넌트를 하나만 보여주는 배치관리자이다. 
맨 위의 컴포넌트만 보여주므로 한번에 하나의 컴포넌트만 볼 수 있다. 
CardLayout에는 맨 위에 위치할 컴포넌트를 지정할 수 있는 메서드가 지원되며, 또한 그 다음에 나올 컴포넌트를 이동시킬 수 있는 메서드를 지원한다. 

 

+ Recent posts