JAVA 38

[자바] 콜백(CallBack) - JFrame

콜백(CallBack)을 왜 사용하는가? 특정 조건이 있고, 이 조건을 만족할 때마다 기능을 수행한다고 하자. 콜백을 사용하면 이벤트가 발생하여 특정 조건을 만족시켰을 경우, 콜백 함수를 호출하여 바로 기능을 수행할 수 있다. 콜백 함수는 바로바로 사용할 수 있으며, 조건이 맞는지 틀린지 확인하는 과정을 거치지 않아도 되기에 효율적이다. 만약, 콜백을 사용하지 않고 계속 객체에 접근하는 방식으로 코드를 작성하였다고 하자. 해당 객체에 어떠한 오류가 발생할 경우 그 객체부터 접근하는 과정까지 모두 수정이 필요할 수 있다. 콜백이라는 개념을 사용하면 객체의 주소만 연결시켜주면 바로 기능을 수행할 수 있다. * 이번 글에서는 수업 예제인 콜백을 GUI코드로 예시를 들고, 다음 글에서 GUI를 제외한 콜백 코드..

JAVA/GUI 2021.07.19

[자바] JFrame 이미지 추가하기 - 슈퍼마리오(1)

슈퍼마리오 배경과 캐릭터 이미지 추가하여 프레임 꾸미기 JFrame을 상속받은 MyImage 클래스를 선언 JPanel을 상속받은 MyPanel 내부 클래스를 선언 생성자와 initData, setInitLayout 메소드를 선언 내부 클래스에서 paintComponent 메소드를 오버 라이딩하여, 배경화면과 캐릭터 1, 2, 3을 프레임에 추가 import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.JFrame; import javax.swing.JPanel; class M..

JAVA/GUI 2021.07.17

[자바] KeyListener

키보드를 아무거나 눌렸을 때, 해당 키의 키 코드 출력 코드 작성하기 어떠한 키를 입력하면 해당 키 코드와 키가 출력됨 Frame을 상속받고, KeyListener을 인터페이스로 받음 JTextArea를 사용하여 텍스트 입력 영역을 만듦 e.getKeyCode, e.getKeyChar 메소드를 사용하여 keycode와 keychar를 리턴함 import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import javax.swing.JFrame; import javax.swing.JTextArea; class MyKeyEvent extends JFrame implements KeyListener{ JTextArea area; //창에 텍스트 영..

JAVA/GUI 2021.07.15

[자바] JPanel

JFrame을 상속받아 JPanel, JButton을 사용하는 코드 작성하기 import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; class MyPaner extends JFrame { JPanel panel1; //JPanel 타입으로 panel 변수 선언하기 JPanel panel2; JPanel panel3; JPanel panel4; JButton button1; //JButton 타입으로 button 변수 선언하기 JButton button2; JButton b..

JAVA/GUI 2021.07.15

[자바] JButton 만들기 + 클릭 이벤트

Button 5개 생성하여 동, 서, 남, 북, 중앙으로 배치하는 코드 작성하기 import java.awt.BorderLayout; import javax.swing.JButton; import javax.swing.JFrame; class MyLayout extends JFrame{ //JFrame 상속받기 JButton button1; //JButton 타입으로하고, 변수명을 button1로 선언함. JButton button2; JButton button3; JButton button4; JButton button5; public MyLayout() { initData(); setInitLayout(); } private void initData() { this.setTitle("Button 위치..

JAVA/GUI 2021.07.14

[자바] 싱글톤 패턴(Singleton pattern)

싱글톤 패턴이란? -> 하나의 객체를 생성하여, 이 객체를 어디든 참조하여 사용할 수 있게 하는 패턴이다. 생성자는 private로 선언하여 다른 클래스에서 생성하지 못하게 한다. 메소드는 static(정적) 메소드로 선언하여 사용한다. 생성자가 여러 번 호출되더라도 실제로 생성되는 객체는 하나고, 최초 생성 이후 호출된 생성자는 최초에 생성한 객체를 반환한다. 싱글톤 패턴을 사용하는 이유 고정된 메모리 영역을 얻을 수 있다. 한 번의 new로 인스턴스를 사용할 수 있기 때문에 메모리 낭비를 방지한다. 싱글톤 패턴으로 만들어진 클래스의 인스턴스는 전역 인스턴스 이므로 다른 클래스에 데이터를 공유할 수 있다. 싱글톤 패턴의 문제점 너무 많은 데이터를 공유시킬 경우, 다른 클래스의 인스턴스들 간에 결합도가 ..

JAVA 2021.07.14

예외 처리

예외(Exception) -> 문법적으로는 맞지만 작동이 이상하거나 결과에 악영향을 미칠 수 있는 실행에서 발생한 오류를 예외라고 함. 예를 들어, 정수를 0으로 나누는 경우 int div1 = 5; int div2 = 0; System.out.println("나누기 결과: " + div1 / div2); //값을 0으로 나눌 수 없기 때문에 예외 발생. 예외 처리 코드 try { //예외가 발생할 가능성이 있는 실행문 } catch (처리할 예외 타입 e) { //예외 처리문 } finally { //예외 발생 여부와 상관없이 실행되는 문장 } //다중 catch도 가능함. try { //예외가 발생할 가능성이 있는 실행문 } catch (처리할 예외 타입 e) { //예외 처리문1 } catch (처..

JAVA 2021.07.13

[자바] Login 화면 구성하기

구성 순서 JFrame을 부모 클래스로 상속받아 Login 클래스 생성 JPanel, JLabel, JTextField, JPasswordField, JCheckBox, JButton 클래스를 사용하여 로그인을 할 때, 필요한 옵션을 추가 Login 생성자 선언, initData 메소드를 통해 객체를 생성하여 옵션 만들기, setInitLayout 메소드를 통해 창에 옵션들을 추가 메인 메소드에 Login 클래스 객체 생성 - setInitLayout 메소드에 옵션을 추가하지 않은 경우 import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JFrame; import javax.swing.JLabel; import java..

JAVA/GUI 2021.07.13

[자바] 공격 프로그램 구현해보기

Warrior, Archer, Wizard 등의 공격수를 클래스로 생성하여 서로를 공격하는 프로그램 만들기. Warrior, Archer, Wizard 클래스는 공통된 멤버 변수를 가지고 있으며, 하나의 키워드로 묶을 수 있다. Hero라는 클래스를 3개의 공격수 클래스의 부모 클래스로 선언한다. (3개의 공격수 클래스는 자식 클래스) - Warrior 공격수는 comboAttack 능력을 가지고 있음. package ex01; public class Warrior extends Hero{ public Warrior(String name, int hp) { super(name, hp); } public void comboAttack() { System.out.println("Warrior의 공격입니다."..

JAVA 2021.07.11

[자바] 상속

상속이란? -> 자식 클래스가 부모 클래스의 필드와 메소드를 물려받는 것. (자식 클래스가 부모 클래스를 선택하여 물려받음.) * '자식 클래스 extends 부모 클래스' 형식으로 extends 키워드를 사용함. * 상속을 사용하는 이유 : 서로 다른 클래스가 중복되는 타입(카테고리)의 필드를 가지고 있을 경우 상속을 사용하면 훨씬 간결해진 클래스 구조를 만들 수 있음. * 상속의 효과 부모 클래스를 재사용하여 자식 클래스를 빠르게 개발 가능 유지 보수 편리 코드 중복 줄임. * 상속 대상 제한 private, 디폴트 접근 지정자 사용시 상속이 제한됨 final 클래스는 아무한테도 상속 안 함 단일 상속 (자식 클래스 입장에서는 하나의 부모 클래스에서만 상속받을 수 있음.) Ex) '학생', '선생님'..

JAVA 2021.07.09