1. GUI
- 그래픽 사용자 인터페이스(Graphical User Interface)로 사용자가 편리하게 입출력할 수 있도록
그래픽으로 화면을 구성하고, 마우스나 키보드로 입력받을 수 있도록 지원하는 사용자 인터페이스
2. java GUI (swing,awt)
- java GUI는 강력한 GUI컴포넌트를 제공하고 쉬운 GUI프로그래밍을 할 수 있다는 특징이 있다.
- GUI 컴포넌트를 이용해 프로그래밍하는데, AWT(java.awt)와 Swing(javax.swing)가 있다.
- AWT (Abstract Window Toolkit) 와 Swing이 그림을 그리는 대상은 크게 두 가지이다.
1. 특정 한 가지 기능을 하는 '컴포넌트' (ex. 버튼, checkbox..)
2. 그 컴포넌트들을 담는 그릇인 '컨테이너' (ex. 프레임, 패널..)
GUI | 설명 |
AWT | - AWT는 운영체제가 제공하는 자원을 이용해 컴포넌트를 생성한다 - 만들기가 쉽지만 느리고 무겁다 |
Swing | - 컴포넌트가 자바로 작성되어 있기 때문에 어떤 플랫폼에서도 일관된 화면이 작성 가능하다. - 만들기가 힘들지만 빠르고 가볍다. |
- awt보다 자바에서 진보적인 GUI는 swing이다. (최근엔 JavaFX가 더 좋다고 함) 사용법은 거의 동일하다.
- MVC 패턴 (Model View Controller) :
Model : 데이터를 가져와 어떤 작업을 처리하거나 처리한 작업을 저장한다.
View : 데이터를 보여주는 역할을 한다.
Controller : 뷰와 모델 사이의 흐름을 제어한다.
3. AWT 패키지
- import java.awt.*;로도 선언할 수 있고 패키지명이 java.awt로 시작하면 모두 AWT관련 패키지이다.
4. 컴포넌트 (Component)
- 모든 컴포넌트의 조상은 Component 클래스이다. (*예외 : 메뉴 관련 컴포넌트)
- Component클래스의 조상은 Object 클래스이다.
1. 일반 컴포넌트 - (최상위조상 : Component)
-> Button, Label, Checkbox, List, Choice, Scrollbar, Dialog(대화상자요소), Frame, TextArea/TextField,
FileDialog(파일열기)...
2. 메뉴 컴포넌트 - (최상위조상 : MenuComponent)
-> MenuBar, MenuItem(Menu-popupmenu, CheckboxMenuitem)...
5. 컴포넌트의 주요 메소드
- Color getBackground() : 컴포넌트의 배경색을 얻는다
- void setBackground(Color c) : 컴포넌트의 배경색을 지정된 색으로 변경한다.
- Cursor getCursor() : 컴포넌트에 지정된 커서를 얻는다.
- void setCursor(Cursor c) : 컴포넌트의 커서(마우스포인터) 를 지정한다.
- Font getFont() : 컴포넌트에 지정되어 있는 Font를 얻는다.
- void setFont(Font f) : 컴포넌트의 Font를 지정한다.
- Color getForeground() : 컴포넌트의 전경색을 얻는다.
- void setForeground(Color c) : 컴포넌트의 전경색을 지정한다.
- int getHeight() : 컴포넌트의 높이를 얻는다.
- int getWidth() : 컴포넌트의 폭을 얻는다.
- void setBounds(int x, int y, int witdh, int height) : 컴포넌트의 위치(x,y)와 크기(width, height)를 지정한다.
- Rectangle getBounds() : 컴포넌트의 위치와 크기(Rectangle 객체)를 얻는다.
- Point getLocation() : 컴포넌트의 위치를 얻는다.
- void setLocation(int x, int y) : 컴포넌트의 위치를 지정한다.
- Dimension getSize() : 컴포넌트의 크기를 얻는다.
- void setSize(int width, int height) : 컴포넌트의 크기를 지정한다.
- boolean hasFocus() : 컴포넌트가 현재 focus를 갖고 있는지 알려준다.
- void requestFocus() : 컴포넌트가 focus를 갖도록 한다.
- void paint(Graphics g) : 컴포넌트를 화면에 그린다.
- void repaint() : 컴포넌트를 화면에 다시 그린다.
- void setEnabled(boolean b) : 컴포넌트를 사용가능(true)/불가능(false)하게 한다.
- Container getParent() : 컴포넌트가 포함되어져 있는 컨테이너(parent)를 얻는다.
- void setVisible(boolean b) : 컴포넌트가 화면에 보이게(true)/보이지 않게(false)한다.
7. 컨테이너 (Container)
- 컨테이너 : Component의 자손인 Container또는 Container의 자손들이며 컨테이너는 다른
컴포넌트 또는 컨테이너를 포함할 수 있다.
- 독립적 컨테이너 : 독립적으로 사용될 수 있고 다른 컴포넌트 또는 종속적 컨테이너를 포함할 수 있다.
- 종속적 컨테이너 : 독립적으로 사용될 수 없고 다른 컨테이너에 포함되어야만 한다.
8. 컨테이너의 주요 메소드
- 컨테이너에는 여러 개의 오버로딩된 add메소드들이 존재한다. 따라서 컨테이너에 add메서드를 사용하는 것 만으로도 다른 컴포넌트들을 포함시킬 수 있다.
- 컨테이너에 포함된 컴포넌트들은 기본적으로 컨테이너의 설정(배경색&전경색, 폰트 등)을 따른다.
- Component[] getComponents() : 컨테이너에 포함되어 있는 모든 컴포넌트를 얻는다.
- Component getComponent(int n) : 컨테이너에 n번쨰로 추가된 컴포넌트를 얻는다.
- Component getComponentAt(int x, int y) : 컨테이너의 지정 위치(x, y)에 있는 컴포넌트를 얻는다.
- Component add(Component comp) : 컨테이너에 컴포넌트를 추가한다.
- void remove(Component comp) : 컨테이너에서 지정된 컴포넌트를 제거한다.
- Insets getInsets() : 컨테이너의 경계의 크기를 알 수 있는 Inset객체를 얻는다.
- LayoutManager getLayout() : 컨테이너에 설정되어 있는 LayoutManager를 얻는다.
- void setLayout(LayoutManager mgr) : 컨테이너에 LayoutManager를 설정한다.
▶AWT 컨테이너
Frame(프레임) |
- 응용프로그램에 윈도우를 생성하기 위해 사용하며 기본적으로 타이틀, 최소버튼, 최대버튼, 종료버튼 지원한다. - 상위클래스인 Window는 타이틀, 메뉴가 지원되지 않는다. - 기본으로 화면에 안보이게 설정했기 때문에 반드시 setVisible(true)값으로 설정해야 화면상에 보여짐 - 만드는 방법은 Frame을 상속받아도 되고, main 메소드에서 직접 작성 가능. |
주요 메소드 | |
static Frame[] getFrames() | 애플리케이션에서 생성한 모든 프레임을 리턴 |
MenuBar getMenuBar() | 프레임의 메뉴바를 리턴 |
int getState() | 프레임의 상태를 리턴 |
String getTitle() | 타이틀 바의 문자열을 리턴 |
void remove(MenuComponent m) | 프레임에서 지정한 메뉴를 제거 |
void setMenuBar(MenuBar mb) | 프레임의 메뉴바를 지정 |
void setResizable(Boolean resizable) | 프레임의 크기를 사용자가 변경할 수 있게 지정 |
void setSize(int width, int height) | 이 컴퍼넌트의 사이즈를 width 및 height로 변경 |
void setVisible(boolean b) | 파라미터 b값에 응해, 이 컴퍼넌트를 표시하는지 비표시로하는지 합니다. |
void setLocation(int x, int y) | 이 컴퍼넌트를 새로운 위치로 이동 |
void setBounds(intx, inty, int width, int height) | 위치와 크기를 설정 |
Panel(패널) |
- 컴포넌트를 그룹별로 묶어서 처리할 때 주로 사용한다. - 일반적으로 Frame 컴포넌트들을 직접 붙이지 않고 Panel에 그룹별로 붙이고 Panel을 Frame에 다시 붙인다. |
생성자 | |
Panel() | 디폴트의 레이아웃 매니저를 사용해 새로운 Panel 생성 |
Panel(LayoutManager layout) | 지정된 레이아웃 매니저를 이용하여 새로운 Panel |
Dialog(다이얼로그) |
- 메안 윈도우 외에 메시질ㄹ 출력하거나 사용자로부터 자료 를 입력 받을 때 사용하는 컨테이너 |
주요 생성자 | |
Dialog(Dialog owner) | 소유하는 Frame이 owner인 Dialog 생성 |
Dialog(Dialog owner, String title) | title을 가진 Modeless Dialog 생성 |
Dialog(Dialog owner, String title, boolean modal) | modal이 true이면 modal다이얼 로그 생성 아니면 modeless 다이얼로그 생성 |
Dialog(Frame owner) | owner 프레임이 소유하는 Modeless 다이얼로그 생성 |
▶AWT 컴포넌트
Button(버튼) |
- Button() 생성자를 사용해 버튼을 생성한다. |
CheckBox(체크박스) |
- 메안 윈도우 외에 메시지를 출력하거나 사용자로부터 자료 를 입력 받을 때 사용하는 컨테이너 |
CheckBox() | 레이블이 없는 체크 박스 생성 |
CheckBox(String lable) | 레이블을 설정한 체크 박스 생성 |
CheckBox(String label, Boolean state) | 지정된 레이블과 state를 넣어서 생성 |
CheckBox(String label, boolean state, CheckboxGroup group) | 지정된 레이블이 붙은 체크 박스를 지정된 체크 박스 그룹에 구축해 지정된 상태로 생성 |
CheckboxGroup | 객체를 생성해서 지정해주면 라디오 버튼이 됩니다. |
Choice(초이스) |
- List와 유사한 기능을 가지는 여러 아이템 중 하나만 선택할 수 있도록 해주는 컴포넌트 - choice() 생성자를 사용한다. |
주요 메소드 | |
void add(String item) | 항목 추가 |
String getItem(int index) | 선택 항목 리턴 |
int getItemCount() | 항목 수를 리턴 |
int getSelectedIndex() | 현재 선택된 항목의 인데스를 리턴 |
String getSelectedItem() | 현재 선택된 항목의 문자열을 리턴 |
void insert(String item, int index) | 항목을 지정된 위치에 삽입 |
void remove(int position) | 지정된 위치의 항목을 삭제 |
void remove(String item) | item 처음 표시되는 항목을 삭제 |
void removeAll() | 모든 항목 삭제 |
void select(int pos) | 위치를 설정 |
void select(String str) | 지정된 항목으로 설정 |
Label(레이블) |
- 사각형 영역에 문자열을 표시할 때 사용하는 컴포넌트 - Label() , Label(String text) , Label(String text, int alignment) , Label.CENTER, LEFT, RIGHT 등을 생성자로 사용한다. |
주요 메소드 | |
getText() | text를 리턴 |
setText(String text) | text로 레이블 설정 |
setAlignment(int align) | 정렬 상태 설정 |
List(리스트) |
- 여러개의 항목을 보여주고 사용자가 하나 또는 여러개의 항 목을 선택할 수 있도록 지원하는 컴포넌트이다. - 기본적으로 하나의 항목을 선택할 수 있지만 MultipleMode 를 설정하면 한번에 여러개의 항목을 선택할 수 있다. |
생성자 | |
List() | 비어 있는 리스트 생성 |
List(int rows) | 숫자만큼의 항목을 보여주는 리스트 생성 |
List(int rows, boolean, multipleMode) | 숫자만큼의 항목을 보여주고 멀티 선택 가능 리스트 생성 |
주요 메소드 | |
void add(String item) | item 추가 |
void add(String item, int index) | 선택한 위치에 item 추가 |
void deselect(int index) | 지정된 인덱스에 있는 항목을 선택 해제 |
String getItem(int index) | 인덱스에 해당하는 항목을 리턴 |
int getItemCount() | 항목 수를 리턴 |
String[] getItems() | 리스트내의 항목을 리턴 |
int getSelectedIndexes() | 선택된 항목들의 인덱스 리턴 |
String getSeleectedItem() | 선택된 항목의 문자열을 리턴 |
String[] getSelectedItems() | 선택된 항목들의 문자열을 리턴 |
void remove(int position) | 항목 삭제 |
void remove(String item) | item 항목 삭제 |
void removeAll() | 항목 전체 삭제 |
TextField |
- 한 줄 내의 텍스트를 입력받거나 편집할 수 있는 컴포넌트 |
생성자 | |
TextField() | 비어있는 텍스트 필드 객체 생성 |
TextField(int columns) | 지정한 컬럼 수만큼 문자를 보여줄 수 있는 크기로 텍스트 필드 객체 생성 |
TextField(Strimg text) | 초기 텍스트를 설정해서 생성 |
TextField(String text, int columns) | 초기 텍스트를 설정하고 보여줄 수 있는 크기로 생성 |
주요 메소드 | |
setEchoChar(char c) | 보여지는 문자를 설정 |
int getCaretPosition() | 텍스트 내에서 현재 마우스 포인터의 위치를 리턴 |
String getText() | 텍스트 내의 표시되는 텍스트를 리턴 |
void select(int selectionStart, int selection End) | 시작위치부터 마지막위치까지 선택 |
void selectAll() | 텍스트 컴퍼넌트 내의 모든 텍스트를 선택 |
void setBackground(Color c) | 백그라운드 칼라를 설정 |
void setCaretPosition(int position) | caret의 위치를 설정 |
void setText(String t) | 표시되는 텍스트를 지정된 텍스트로 설정 |
TextArea |
- 여러줄의 텍스트를 입력받거나 편집할 수 있는 컴포넌트 <상수> - static int SCROLLBARS_BOTH: 수평과 수직 스크롤바 - static int SCROLLBARS_HORIZONTAL_ONLY : 수평 스크롤바 - static int SCROLLBARS_NONE - static int SCROLLBARS_VERTICAL_ONLY : 수직 스크롤바 |
생성자 | |
TextArea() | 새로운 텍스트 영역을 생성 |
TextArea(int rows, int columns) | 행수와 열수 지정 생성 |
TextArea(String text) | 초기값을 설정 |
TextArea(String text, int rows, int columns) | 초기값과 행수와 열수 지정 생성 |
TextArea(String text, int rows, int columns, int scrollbars) | 행수와 열수를 지정하고 스크롤바 표시여부를 설정해서 생성 |
Canvas |
- 특정한 모양을 갖지 않고 사각형의 영역만을 가지는 컴포넌트로 주로 그림을 표시할 때 사용한다. <메뉴 컴포넌트> - MenuBar : 메뉴 표시줄을 만들 때 사용 - Menu : 메뉴 표시줄에 보이게 될 메뉴를 만들 때 사용 - MenuItem : 메뉴에 포함될 세부 메뉴를 만들 때 사용 - CheckboxMenuItem : 체크 박스가 있는 메뉴 - PopupMenu : 동적 메뉴를 만들 때 사용 <생성방법> - MenuBar 메뉴바 객체 = new MenuBar(); - Menu 메뉴객체 = new Menu(메뉴명); - 메누바객체.add(메누 객체); - MenuItem 세부메뉴객체 = new MenuItem("세부 메뉴 명"); - 메뉴명.add(세부메뉴명); |
배치 관리자 |
- 레이아웃에 따라 컴포넌트들을 배치하기 위한 객체 - setLayout()을 이용하고 종류로는 FlowLayout, BorderLayout, GridLayout, CardLayout등이 있다. - FlowLayout : panel의 기본으로 컴포넌트 들을 수평으로 순서대로 나열하는 레이아웃입니다. - 수평으로 배치하다가 더 이상 공간이 없으면 다음 줄로 이동해서 배치 합니다. |
BorderLayout |
- 5개의 영역으로 구분하여 보여준다. - 프레임은 기본적으로 BorderLayout 이다. |
BorderLayout | ||
West | North | East |
Center | ||
South |
GridLayout |
- 격자 모양으로 배치한다.
- 행과 열의 수를 지정해서 배치한다.
- 행과 열 수보다 컴포넌트의 수가 많으면 자동적으로 늘어난다.
|
CardLayout |
- 여러 개의 카드를 쌓은 것처럼 보여주는 레이아웃으로 한번에 하나만 보여줍니다.
- next 메소드를 이용해서 다음 화면을 출력합니다.
- Layout에 null을 설정하면 좌표와 크기를 직접 설정해서 배치합니다.
|
'JAVA > JAVA2' 카테고리의 다른 글
[java2] #10 - Generic(제네릭) (0) | 2022.07.16 |
---|---|
[java2] #09 - Exception(예외)종류와 처리 (0) | 2022.07.14 |
[java2] #07 - String toString() (0) | 2022.07.13 |
[java2] #06 - 인터페이스 (interface) (0) | 2022.07.13 |
[java2] #05 - 추상클래스(abstract class) (0) | 2022.07.11 |