자바
[자바] Youtub Tutorial 게임을 만들면서 정리한 점 ( 주석 및 정리 )
j9972
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
각종 컴포넌트와 특정 네이티브인 툴킷의 구현을 묶기 위함.
즉, 컴포넌트 상태를 설정한 후에 상태를 조회하면, 요구된 변경이 값으로 해서 돌려주지 않는다.