java 기초 공부 내용 정리(GUI Programming1)

홍준성·2022년 6월 5일
1

java 기초 공부

목록 보기
38/39

GUI(Graphical User Interface)

컴퓨터를 사용하는 사용자를 위해 만들어진 특정한 기능을 가진 그래픽 요소

GUI 프로그래밍

사용자가 프로그램을 쉽게 다룰 수 있도록 그래픽을 제공하도록 프로그래밍 하는 것

AWT와 Swing

AWT

자바에서 GUI를 프로그래밍 하기 위해 처음으로 제공한 라이브러리

특징

  1. java.awt 패키지에 Frame, Window, Panel, Button, Label 등이 존재
  2. 운영 체제의 자원 활용

Swing

AWT를 대체하기 위해 자바로 작성된 GUI 객체

특징

  1. javax.swing 패키지에 JFrame, JWindow, JPanel, JButton, JLabel 등이 존재
  2. 운영체제에 의존적이지 않으며, 운영체제와 관계없이 동일한 모양을 사용

컴포넌트(Component)와 컨테이터(Container)

  • 컴포넌트: JAVA에서 GUI를 구성하는 요소
  • 컨테이너: 다른 컴포넌트를 포함할 수 있는 컴포넌트

GUI GUI Programming

실제 GUI 프로그래밍을 하기 위해서 사용하는 메서드

메서드기능
setLocation(int x, int y)프레임의 위치를 지정
setSize(int width, int height)프레임의 크기를 지정
setIconImage(Image IconImage)프레임의 타이틀 바에 보여질 아이콘 설정
setTitle(String title)타이틀바의 제목을 설정
setVisible(boolean b)화면에 표시 여부를 설정

GUI 프로그래밍 순서

  1. extends JFrame
  • JFrame 클래스를 상속받아, 나만의 프레임클래스 작성
  • 생성자에서 컴포넌트 및 프레임의 디자인 구현하기

기본 설정 - 생성자에서 하기

  • title 설정: setTitle("타이틀명");
  • size 설정: setSize(가로길이, 세로길이);
  • visible 설정: setVisible(true);
import java.awt.FlowLayout;
import javax.swing.*;

public class AddFrame extends JFrame{
	
	AddFrame(){
		setTitle("JFrame");
		setSize(300,300);
		
		//컴포넌트 만들기
		JButton button=new JButton("button");
		JCheckBox box = new JCheckBox("checkbox");
		JSlider slide = new JSlider();
		JTextField tf=new JTextField("text 입력",20);
		this.setLayout(new FlowLayout());
		
		this.add(button);
		this.add(box);
		this.add(slide);
		this.add(tf);
		
		setVisible(true);
		
		//내 프로그램 닫는 기능을 닫기 버튼으로 설정
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	
	public static void main(String[] args) {
		
		new AddFrame();
	}
}

배치관리자(Layout Manager)

컨테이너 내부에 컴포넌트 추가 시 각각의 위치와 크기에 관해 결정

배치관리자의 종류

배치관리자특징
FlowLayout왼 → 오 순서대로 배치
BorderLayout컨테이너 공간을 동서남북 중앙으로 나누고 지정한 영역에 배치
GridLayout컨테이너 공간을 동일 크기의 2차원 격자로 나누고 들어오는 순서대로 왼 → 오 배치
CardLayout카드를 쌓아놓은 듯이 컴포넌트를 쪼개어 배치

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;

import javax.swing.JButton;
import javax.swing.JFrame;

public class AddFrame extends JFrame{
	public static void main(String[] args) {
//		new FlowWindow();
//		new BorderWindow();
		new GridWindow();
	}
}

class FlowWindow extends JFrame{
	FlowWindow(){
		setTitle("flow window");
		setSize(300, 300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JButton btn1=new JButton("btn1");
		JButton btn2=new JButton("btn2");
		JButton btn3=new JButton("btn3");
		
		this.add(btn1);
		this.add(btn2);
		this.add(btn3);
		
		this.setLayout(new FlowLayout());
		
		setVisible(true);
	}
}

class BorderWindow extends JFrame{
	BorderWindow(){
		setTitle("border window");
		setSize(300, 300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JButton btn1=new JButton("btn1");
		JButton btn2=new JButton("btn2");
		JButton btn3=new JButton("btn3");
		JButton btn4=new JButton("btn4");
		JButton btn5=new JButton("btn5");

		this.setLayout(new BorderLayout());
		this.add(btn1,BorderLayout.EAST);
		this.add(btn2, BorderLayout.WEST);
		this.add(btn3, BorderLayout.SOUTH);
		this.add(btn4, BorderLayout.NORTH);
		this.add(btn5, BorderLayout.CENTER);
		
		

		
		setVisible(true);
	}
}

class GridWindow extends JFrame{
	GridWindow(){
		setTitle("grid window");
		setSize(300, 300);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		
		JButton btn1=new JButton("btn1");
		JButton btn2=new JButton("btn2");
		JButton btn3=new JButton("btn3");
		
		this.add(btn1);
		this.add(btn2);
		this.add(btn3);
		
		this.setLayout(new GridLayout(2, 2));
		
		setVisible(true);
	}
}
profile
준성이의 개발자 공부 velog

0개의 댓글