본문 바로가기

프로그래밍 언어/Java

Week7) Java Programming Lab : Grapical User Interface (GUI) AWT and Swing APIs

 

Java-Lecture7.pdf
1.56MB

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 <자바 프로그래밍 실습> 수업