ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [자바] Youtub Tutorial 게임을 만들면서 정리한 점 ( 주석 및 정리 )
    자바 2022. 9. 19. 14:33
    728x90

    간력적인 정리

    JFrame

    java swing class의 일부이며, 구현되는 하나의 창이다.

    Swing

    자바에서 GUI( 그래픽 사용자 인터페이스 )를 구현하기 위해 제공되며 버튼, 창, 표 등의 컴포넌트들을 이용할 수 있게 해주는 클래스다.

     

    예시코드

    import javax.swing.*;
    
    public class TestJFrame extends JFrame {
        public test() {
            setTitle("");
            setSize(width, height); // 창 사이즈
            setVisible(true);
        }
        
        public static void main(String[] args) {
            new testJFrame(); // Frame의 생성자를 호출해야한다. 
        }
    }

     

    Panel

    frame과 동일하게 컴포넌트를 붙이지만, 다른점은 패널을 만들어서 패널에 컴포넌트를 붙이고 그 패널을 프레임에 붙인다는 점이다.

    결국 컴포넌트가 탑재되어서 프레임에 붙는다는 것이다.

    -> 프레임에 붙기에 프레임보다 사이즈가 크거나 프레임영역 밖으로 나갈 수 없다.

     

     

    예시코드

    import java.awt.*;
    public class test {
        public static void main(String[] args) {
            Frame f = new Frame();
            Panel p = new Panel();
            
            // 프레임과 패널을 세팅 및 레이아웃 설정
            f.setTitle("");
            f.setBounds(200,200,200,200);
            f.setVisible(true);
            f.setLayout(null);
            
            p.setBounds(100,100,100,100);
            p.setlayout(null);
            
            // 컴포넌트 설정
            Button btn = new Button("");
            
            // 패널에 컴포넌트 붙이기
            p.add(btn);
            
            // 프레임에 패널 붙이기 
            f.add(p);
        }
    }

    Event

    KeyEvent

    keyPressed( KeyEvent e ) { }
    // 키를 눌렀을 경우에 호출
    
    keyReleased( KeyEvent e ) { }
    // 키에서 손을 떼는 경우에 호출
    
    keyTyped( KeyEvent e ) { }
    // 글자를 입력하는 경우에 호출

     

    MouseEvent

    mouseClicked( MouseEvent e ) { } 
    // 마우스 클릭하는 경우 호출
    
    mouseEntered( MouseEvent e ) { } 
    // 마우스가 컴포넌트 영역안으로 들어가면 호출
    
    mouseExited( MouseEvent e ) { } 
    // 마우스가 컴포넌트 영역밖으로 나가면 호출
    
    mousePressed( MouseEvent e ) { } 
    // 마우스가 컴포넌트 위에서 눌려지면 호출
    
    mouseReleased( MouseEvent e ) { } 
    // 마우스가 컴포넌트 위에서 떼어지면 호출
    
    mouseDragged( MouseEvent e ) { } 
    // 마우스 버튼을 누른채로 이동
    
    mouseMoved( MouseEvent e ) { } 
    // 마우스 버튼을 누르지 않은 채로 이동

     

    Graphics

    그래픽 메소드에 쓰인다

    java.awt.*; 에 포함되어 있다

     

    1.  선,사각형,원 등을 그리는 메소드의 집합
    2.  내부를 채우는 fill, 내부를 채우지 않는 draw
    3.  좌표 구조는 오른쪽 아래방향으로 값이 증가하는 형태이다

     

    예시코드

    public void draw(Graphics g) {
        g.setColor(Color.red);
    }

     

    Random

    일정 범위 안에 아무 값, 난수를 생성할때 사용한다

     

    사용 방법

    1. Random 클래스 사용

    1. import java.util.*; 필요
    2. Random 클래스 객체 필요
    3. int, double, boolean 등 타입에 따라서 객체.next타입( ) 이렇게 사용

     

    예시코드

    import java.util.*;
    
    public class Random() {
        public static void main(String[] ags) {
            Random random = new Random(); 
        
            System.out.println(random.nextInt());
            // nextInt(10) 이면, 0 ~ 9 사이의 난수, 없으면 int 범위의 난수
            System.out.println(random.nextDouble());
            System.out.println(random.nextBoolean());
        }
    }

     

    2. Math 사용

    예시 코드

    int randomValue;
    
    randomValue = (int)( Math.random() * 100 + 1 );
    // 변수 = (타입)( Math.random() * 최댓값 + 증감값 );

     

    SetFont 메소드

    폰트 객체 생성

    // Font 폰트객체명 = new Font(적용사항)
    Font font = new Font("글자체", "효과", "글자 크기"); 
    
    // 폰트 적용 ( Graphics g ) 를 사용
    g.setFont("글자체", "효과", "글자 크기");

     

    효과

    1. Font.BLOD -> 글자를 굵게함

    2. Font.ITALIC -> 글자를 대각선으로 눕힘

    3. Font.PLAIN -> 글자를 일반 글자

     

    setSize, setPreferredSize 

     

    사용 방법

    setSize( new Dimension(x,y) )
    
    setPreferredSize( new Dimension(x,y) )

     

    비교

    둘다 해당 컴포넌트의 크기를 결정을 할때 사용한다

    하지만, setPreferredSize는 layout 지정할 때 사용한다

     

     

    쓰레드 (thread)

    프로그램 실행시 위에서 아래로 순차적으로 실행 되는 흐름을 하나의 스레드라고 표현

     

    쓰레드를 사용하는 이유

     

    run( ) 안에 코드를 작성해서 병렬처리 하는 방법

    // 이 클래스를 실행하기 위해, 객체 생성 후 start( ) 메소드 호출 필수\
    public class testThread {
        public void run() {
             // .. 병렬처리 할 코드 구현
        }
    }
    
    class thread extends implements Runnable {
        public static void main(String[] args) {
            thread th = new thread();
            th.start();
        }
    }

     

    여러 쓰레드 기동

    class thread extends implements Runnable {
        public static void main(String[] args) {
            thread th1 = new thread();
            th1.start();
            
            thread th2 = new thread();
            th2.start();
        }
    }

     

    쓰레드 일시정지 및 다른 스레드 종료후 실행

    일시 정지를 위해서는 try-catch 문으로 묶어주기

    class test implements Runnable {
        public void run() {
            // 병렬 처리
            
            try {
                sleep(1000); // 1초 대기
           	} catch ( Exception e ) {
                e.printStackTrace();
            }
       }
    }

    sleep은 무한루프를 통한 cpu 이슈를 막기위해 필수적이다.

     

     

    다른 스레드 종료후 실행은 join( ) 메소드 사용하기

    public class testThread {
        public static void main(String[] args) {
            thread th = new thread();
            th.start();
            
            thread th2 = new thread();
            
            try {
                th.join();
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            th2.start();
        }
    }

    Toolkit

    각종 컴포넌트와 특정 네이티브인 툴킷의 구현을 묶기 위함.
    즉, 컴포넌트 상태를 설정한 후에 상태를 조회하면, 요구된 변경이 값으로 해서 돌려주지 않는다.

     

    '자바' 카테고리의 다른 글

    [자바] 자바 버전별 특징 간단 정리  (0) 2022.12.23
    [자바] 객체지향적인 설계에 대한 정리  (0) 2022.10.27
    [자바] 참조  (0) 2022.08.06
    [자바] 다형성  (0) 2022.08.06
    [자바] 인터페이스  (0) 2022.08.05
Designed by Tistory.