-
[자바] Youtub Tutorial 게임을 만들면서 정리한 점 ( 주석 및 정리 )자바 2022. 9. 19. 14:33728x90
간력적인 정리
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