(학) (공) (web)
04.22(47일차) - SWING을 사용한 GUI활용
만석이
2024. 4. 22. 17:52
---------------------------------------------------------------------------------------
GUI(그래픽 유저 인터페이스)
SWING
- 보다 세련된 형태의 GUI를 제공하기 위해 만들어진 UI클래스들의 모임
JFram 클래스
생성자
JFram() : 보이지 않는 Jframe을 생성
JFrame(String title) : 제목을 가지는 보이지 않는 JFrame을 생성
===JFrame의 주요 메서드===
- setSize(int width, int height) : 프레임의 크기지정
- setLocation(int x, int y) : 프레임이 보여질 좌표 지정
- setVisible(boolean value) : 화면에 표시 여부 결정
- void add(Component c) 만든 요소를 프레임에 붙힌다.
- setDefaultCloseOperation(int operation)
사용자가 JFrame을 닫을 때 기본적으로 어떤 작업을 할지 결정
EXIT_ON_CLOSE 닫기 단추를 누르면 창을 화면에서 사라지게 하고, 메모리에서도 제거
DO_NOTHING_ON_CLOSE 닫기 단추를 비활성화
===이벤트와 이벤트 처리개념===
- 이벤트는 사용자의 입력, 키보드나 마우스 등의 장치나 소프트웨어적으로 발생하는 모든 사건
- 이벤트가 발생하면 발생된 이벤트에 반응하여 필요한 것들을 처리하는데 이를 이벤트 핸들러 라고한다.
- 자바에서 이벤트 핸들러는 메서드로 구현되며, 이벤트의 동작에 응답하는 방식으로 처리되는 프로그램을 이벤트 지향 프로그램이라고한다.
- 이벤트 지향 프로그램은 무한 루프를 돌면서 사용자의 이벤트가 발생하기를 기다린다. 사용자의 이벤트가 발생하면 이벤트를 처리하고 다시 무한루프로 대기한다.
- 자바에서 대부분의 이벤트는 사용자가 GUI화면에서 마우스나 키보드를 조작함으로써 발생한다.
리스너인터페이스를 이용한 이벤트처리
- 리스너 인터페이스는 이벤트와 이벤트 핸들러 사이를 연결해주는 역할
- 이벤트가 발생한 해당 컴포넌트를 리스너에 등록시켜야 프로그램의 제어가 해당 이벤트가 제공하는 이벤트 핸들러로 옮겨진다.
이벤트 클래스 리스너 인터페이스 메서드(이벤트 핸들러)
ActionEvent ActionListener actionPerformed(ActionEvent e)
ChangeEvent ChangeListener stateChanged(ChangeEvent e)
ItemEvent ItemListener itemStateChaged(ItemEvent e)
KeyEvent KeyListener KeyPressed(KeyEvent e)
KeyReleased(KeyEvent e)
KeyTyped(KeyEvent e)
ListSelectionEvent ListSelectionListener ValueChanged(ListSelectionEvent e)
MouseEvent MouseListener mouseClicked(MouseEvent e)
mouseEntered(MouseEvent e)
mousePressed(MouseEvent e)
mouseReleased(MouseEvent e)
MouseMotionLisener mouseDragged(MouseEvent e)
mouseMoved(MouseEvent e)
WindowEvent windowListener WindowActivated(WindowEvent e)
Windowclosed(WindowEvent e)
Windowclosing(WindowEvent e)
WindowDeactivated(WindowEvent e)
===JPanel 클래스===
- Frame에 붙히는 중간 컨테이너 역할
- 화면이 복잡한 경우 요소를 그룹별로 묶어서 표현할 수 있는데, 이러한 경우 JPanel에 묶어서 Frame에 붙힐 수 있다.
- JPanel() 레이아웃이 FlowLayout인 Jpanel을 생성한다.
- Jpanel(LayoutManager layout) 레이아웃 매니저가 layout인 Jpanel을 생성한다.
===배치관리자===
- FlowLayout : 왼쪽에서 오른쪽으로 배치, 오른쪽에서 공간이 없으면 아래로 배치
- BorderLayout : 동, 서 , 남, 북 중앙 5개의 영역으로 나눈다.
- GridLayout : 2차원 표 모양으로서 n X n으로 설정해주며 왼쪽에서 오른쪽으로, 위에서 아래로 배치
- CardLayout : 컴포넌트를 포개어 배치
- Null : 레이아웃을 사용하지 않고 수동으로 배치
===Jpannel의 메서드===
add() 컴포넌트를 패널에 추가
remove 컴포넌트를 패널에서 제거
setBounds() 패널의 좌표와 크기를 설정
setLayout() 패널의 배치관리자를 설정