본문 바로가기

Java38

[Java] awt 테트리스 - 실전편 저번 글 : https://stickode.tistory.com/822 안녕하세요. 저번 시간에 이어서, 오늘은 테트리스를 게임답게 만들어보겠습니다. 우선 모든 코드를 올려두고, 모듈화한 코드들을 설명하겠습니다. 총 5부에 걸쳐서 업로드 할 예정입니다. 각 모듈들(Configuration, Figure, Game, SquareBoard, ,,,)에 대한 설명은 각 게시물로 따로 올리도록 하겠습니다. 오늘 업로드된 코드들에는 모듈에 주석이 없습니다. 우선 디렉토리 구조는 다음과 같습니다. Tetris.java import java.awt.BorderLayout; import java.awt.Button; import java.awt.Color; import java.awt.Container; import .. 2023. 6. 17.
[Java] 스케줄링 라이브러리, Quartz 사용해 Hello world 출력해보기 Quartz는 Java 기반의 오픈 소스 스케줄러 라이브러리입니다. Quartz를 사용하여 Java 애플리케이션에서 스케줄링 작업을 예약할 수 있습니다. 아래는 Quartz를 사용하여 간단한 스케줄링 작업을 설정하는 Java 코드 예제입니다. 먼저, Quartz 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 아래의 의존성을 추가하면 됩니다. org.quartz-scheduler quartz 2.3.2 다음은 Quartz를 사용하여 10초마다 Hello World를 출력하는 Job을 스케줄링하는 예제입니다. import org.quartz.*; import org.quartz.impl.StdSchedulerFactory; public class HelloWorl.. 2023. 6. 16.
[JAVA]SHA-256 를 사용한 문자열 암호화(비밀번호 생성) 안녕하세요 이번시간에는 JAVA에서 SHA-256 함수를 사용해서 암호화를 해보겠습니다. SHA-256 알고리즘은 java.security.MessageDigest 클래스를 사용하여 구현할 수 있습니다. 먼저 getInstance("SHA-256") 메서드를 호출하여 SHA-256 알고리즘의 인스턴스를 생성한 다음, update() 메서드를 호출하여 입력 문자열의 바이트 배열을 업데이트합니다. 마지막으로 digest() 메서드를 호출하여 해시 값을 계산하고, 계산된 해시 값을 bytesToHex() 메서드를 사용하여 16진수 문자열로 변환하여 반환합니다. bytesToHex() 메서드는 바이트 배열의 각 바이트 값을 16진수 문자열로 변환하여 StringBuilder에 추가하고, StringBuilder.. 2023. 6. 5.
[Java] awt 테트리스 - 기본편 오늘은 awt로 테트리스를 만들어보겠습니다. 이 예제는 프로그래밍을 막 시작한 초보 개발자를 대상으로 작성되었습니다. Java AWT (Abstract Window Toolkit)는 Java의 고전적인 그래픽 사용자 인터페이스(GUI) 라이브러리로, 창, 버튼, 라벨, 텍스트 필드 등의 기본적인 GUI 구성 요소를 제공합니다. 이 라이브러리를 사용하여 간단한 테트리스 게임을 구현해 보겠습니다. 이번 시간은 2x2 도형만 등장합니다. 여러 편에 나눠서 최종적으로 완성할 것이니, 이 점 감안해서 참고해주시기 바랍니다. AWT 개요 Java AWT는 다양한 플랫폼에서 일관된 사용자 인터페이스를 구현할 수 있도록 지원합니다. 출시한지 오래되었기 때문에 다른 라이브러리에 비하면 성능 및 사용성 면에서 한계가 있지.. 2023. 6. 3.
[Java] 자바 추상 클래스(Abstract Class) 예제 추상클래스란? 추상클래스는 일반 클래스와 별 다를 것이 없습니다. 단지, 추상 메서드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스입니다. 그래서 미완성 설계도라고도 표현합니다. 상속을 위한 클래스이기 때문에 따로 객체를 생성할 수 없습니다. 또한 추상클래스를 상속해 생성된 자손 클래스는 상속받은 클래스의 메서드를 선언하지 않고선 사용할 수 없는 강제성을 띄게 되는데 이러한 특징을 잘 활용하면 코드를 작성하는 데 있어서 발생하는 실수를 줄여주고 유지와 보수적인 측면에서 조금 더 효율적으로 사용할 수 있습니다. 사용법 사용법은 생각보다 간단합니다. 클래스 앞에 abstract 키워드를 붙여 작성해주면 자연스럽게 추상클래스가 생성됩니다. 이후 필요한 추상메서드들을 추가해 주면 해당 추상.. 2023. 5. 1.
[JAVA] 오류 종류 정리 및 런타임 예외클래스 예제 프로그래밍의 오류 종류는 오류가 발생하는 시점에 따라 크게 3가지로 나뉠 수 있습니다. 컴파일 오류 : 잘못된 구문이나 문법적 오류로 오류 메시지를 출력하거나 애플리케이션 실행을 멈추는 오류(이름 그대로 컴파일 시 발생하는 오류) 런타임 오류 : 컴파일 시에는 없는데 실행 중에 발생하는 오류 논리 오류 : 정확한 로직이 아닌 오류 (실행은 되지만 의도와 다르게 동작하는것) 논리 오류 이른바 ‘버그’ 라고 생각할 수 있습니다. 프로그램이 실행하고 작동하는데는 아무 문제가 없지만 결과가 예상과 달라 사용자가 의도한대로 작동하지않는 오류로 써 서비스 이용에 지장이 생길 수 있습니다. ex) 게임의 경우 바닥이나 벽을 뚫고 지나가는 유저라던가.. 재고를 관리하는 서비스에서 음수가 나온다던가… 하는 경우를 예로 .. 2023. 2. 25.
[JAVA]Calendar 사용해서 현재 요일, 지정 요일 가져오기 안녕하세요. 오늘은 Calendar 사용해서 요일 가져오기를 해보겠습니다. Calendar 클래스는 특정 순간과 YEAR, MONTH, DAY_OF_MONTH, HOUR 등과 같은 달력 필드 집합 간의 변환과 날짜 가져오기와 같은 달력 필드 조작을 위한 메서드를 제공합니다. 요일 뿐만아니라 년,월.일, 연 중의 몇 주인지,월 중의 몇 주 인지 등 문서확인해서 필요한 요소를 가져다 쓰면 좋을 것 같네요 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class MyDate { int dayNum=0; Calendar cal; MyDa.. 2023. 1. 31.
[JAVA] DateTimeFormatter을 사용해 날짜/시간 다루기 안녕하세요! 자바의 DateTimeFormatter을 사용해 날짜를 다루는 다양한 방법을 알아보겠습니다. DateTimeFormatter 는 날짜, 시간 개체를 처리하도록 도와주는 포맷터(Formatter) 클래스 입니다. (공식홈페이지 링크) 예시를 통해 사용법을 알아보겠습니다. 1. 현재 시각을 a hh:mm 포맷으로 구하기 // 포맷팅을 위해 LocalDateTime의 now()메소드를 사용해 현재 시간 구한다 LocalDateTime now = LocalDateTime.now(); // 지정된 패턴을 사용해 포맷터를 만든다 DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("a hh:mm"); // 지정된 포맷터를 사용해 날짜/시.. 2022. 10. 12.
[java] 자바 스윙 화면 구성 자바로도 GUI를 사용한 소프트웨어를 만들 수 있습니다. "스윙"을 사용하는 방법입니다. 자바 이외의 다른 언어 필요 없이, 윈도우에서 돌아가는 프로그램을 제작하고 싶을 때 유용합니다. 메인 클래스 public class controller { public static void main(String[] args) { new swing(); } } swing 클래스 public class swing extends JFrame { public swing(){ setTitle("여기 제목 쓰면 됩니다!!"); setSize(1280, 760);//창 크기 조정 setResizable(true); setLocationRelativeTo(null); // 창 중앙 setDefaultCloseOperation(JF.. 2022. 7. 29.