1. Introduction to Java GUI
- event-driven 프로그래밍 기술
- GUI 사용 방법을 간단하게 배움
- example
2. AWT and Swing GUI Terminology
자바에서 제공하는 GUI 프로그래밍 컴포넌트 라이브러리 : AWT, Swing
- AWT : 시스템 프로그래밍을 기반, Java + C++ , 윈도우에서만 실행됨 (리눅스나 맥 X)
** heavyweight : 운영체제에 의존하기 때문- 장점 : 빠르고, 운영체제의 룩앤필에 맞음
- 단점 : 운영체제간 이동 불가능, 일부 기능만 지원
- Swing : Pure java 기반, 모든 운영체제에서 실행 가능하기 때문에 lightweight
- 장점 : pure java 기반이라서 이동성 좋음, 기능 제한 X, 실행되는 운영체제에 맞는 룩앤필 제공
- 단점 : 성능이 다소 떨어짐, 운영체제 룩앤필과 조금 동 떨어짐
- AWT, Swing Classes
- GUI Terminology
- window : GUI의 최상위 요소 (top-level container) ex) frame, applet
- components : 윈도우 내부의 위젯들 ex) 버튼, 텍스트박스, 라벨
- container : 컴포넌트 간 논리적 그룹 ex) 패널, 박스
2.1 Swing Components
- 각 컴포넌트들은 하나의 클래스로 존재하면 많은 메소드를 가지고 있음
- example
- Pluggable Look-and-Feel
UIManager.setLookandFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
UIMAnager.setLookandFeel("javax.swing.plaf.metal.MetalLookAndFeel");
2.2 GUI Window : JFrame
- 컴포넌트들을 하나로 묶어서 보여주기 위한 그래픽 윈도우
// create frame
public JFramge()
public JFramge(String title)
// example
import java.swing.JFrame;
//... main() ...
JFrame window = new JFrame();
window.setSize(300,300); //px 단위
window.setTitle("First GUI");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
...
- result
2.3 GUI Component : Jbutton
import javax.swing.*;
import java.awt.Color;
...
JFrame window = new JFrame();
window.setSize(300,300); //px 단위
window.setTitle("First GUI");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton();
// settings for button object
button.setTex("Click");
button.setBackground(Color.CYAN);
// add components to frame
window.add(button);
// 컴포넌트를 모두 담은 프레임을 화면에 띄우기 위해 마지막 줄에 코드 삽입
window.setVisible(true);
...
3. GUI Sizing and positioning
- absoulte positioning (C++, C#, ...) : 프로그래머가 모든 컴포넌트에 대해 정확한 픽셀로 위치 지정
ex) (x=15, y=75) 위치에 70x31 px 크기의 버튼을 놓아라 - Layout manager (java)
ex) flowLayout
import javax.swing.*;
import java.awt.Color;
import java.awt.FlowLayout;
...
JFrame window = new JFrame();
window.setSize(300,300); //px 단위
window.setTitle("First GUI");
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton();
// settings for button object
button.setTex("Click");
button.setBackground(Color.CYAN);
FlowLayout layout = new FlowLayout();
// add components to frame
window.add(button);
window.setLayout(layout);
// redraw
window.validate();
// 컴포넌트를 모두 담은 프레임을 화면에 띄우기 위해 마지막 줄에 코드 삽입
window.setVisible(true);
...
- FlowLayout
- BorderLayout (EAST,WEST,CENTER,NORTH,SOUTH) : 스크린 가득차게
- GridLayout
4. Event Listener
- event : 사용자와 인터렉션하는 객체
- listener : 이벤트를 기다리고 응답하는 객체
- event hierarchy
4.1 Action Events
import java.awt.event.ActionListener;
...
changeColor listener = new changeColor();
button.addActionListenr(listener);
...
class ChangeColor implements ActionListener() {
@Override
public void actioinPerformed(ActionEvent e){
// code to do when you click a button
System.out.println("Clicked");
}
}
- result
References
- 성균관대학교 소프트웨어학과 타메르 교수님 2021-1 <자바 프로그래밍 실습> 수업
'프로그래밍 언어 > Java' 카테고리의 다른 글
Week9) Java Programming Lab : Exception Handling (0) | 2021.04.19 |
---|---|
Week8) Java Programming Lab : More on Grapical User Interface (GUI) (0) | 2021.04.12 |
Java programming 자바 프로그래밍 실습 : 다형성 polymorphism 추상 클래스 interface을 활용한 예제 (0) | 2021.04.05 |
Week6) Java Programming Lab : Polymorphism (0) | 2021.03.29 |
Java programming 자바 프로그래밍 실습 : 은행 계좌 ATM (0) | 2021.03.24 |