본문 바로가기

JAVA

[Java] 색상에서 value & 0xff 의미 쉽게 이해하기 0. 소개 Java에서 이미지 처리에서 픽셀 기준으로 RGB값을 뽑아 올 경우 Alpha, Red, Blue, Green 값을 가져오기 위해 Blue = value &0xff Red = (value >>16) &0xff 등의 연산을 볼 수 있다. 이 의미를 알아본다. 1. 이미지의 이해 이미지는 기본적으로 RGB로 이루어져 있다. 이미지를 빨강, 초록, 파랑으로 표현하고, 알파로 투명도를 표현한다. 흔히 빨강, 초록, 파랑, 알파는 0~255의 값으로 표현한다고 들어봤을 것이다. 256은 bit로 8비트로 표현 가능하다. 따라서 이미지를 표현할 때 순서대로 알파, 빨강, 초록, 파랑은 다음 그림과 같다. 2. Shift 연산의 이해 (>>, >24의 뜻은 비트를 오른쪽으로 24만큼, >>16은 비트를 오.. 더보기
[JAVA] CardLayout 패널 화면 쉽게 바꾸기 1. CardLayout 소개 화면을 설계하는데 있어서 여러 가지 화면을 한 프레임 안에서 동작시키고 싶을 때 사용하면 유용하다. CardLayout은 마치 카드놀이와 비슷하다. 제일 위에 있는 카드만 보이고 나머지는 보이지 않는다. 카드를 사용하는 방법은 다음과 같다. 2. CardLayout 메소드 (카드 뽑기) first (Container parent) 컨테이너 안에 첫번째 카드를 뽑는다. next (Container parent) 컨테이너의 다음 카드를 뽑는다. 카드가 마지막 카드라면 첫번 째 카드를 뽑는다. previous (Container parent) 컨테이너의 이전 카드를 뽑는다. 현재 카드가 첫번째 카드라면 마지막 카드를 뽑는다. last (Container parent) 컨테이너의 .. 더보기
[Java] 자바로 그림판 만들기(펜, 도형, 파일 읽기 쓰기, 색깔, 굵기) 0. 기능 펜으로 글씨 쓰기 선, 네모, 원 도형 그리기 색깔, 굵기 조절 파일 저장, 파일 불러오기 전체 지우기, 지우개로 그림 지우기 그림판에 계속 그릴 때 마다 사라지지 않게 BufferedImage 사용 도형 선택해서 드래그 할 때 잔상으로 도형 크기 보이게 하기 1. 실행화면 2. 주요 메소드 설명 2-1 (버튼들 Event 처리) JButton버튼이 눌렸을 때는 JButton의 이름으로 String shapeString에 저장한다. 여기서 JButton은 지우개, 원, 네모, 선, 펜에 해당한다. (예를 들어 원이 눌렸다면 shapeString에 원이라는 String이 저장된다.) 또한 색깔이나 굵기가 선택된거에 따라 변수값에 넣는다. 2-2 (선 그리기 마우스 처리) mousePressed .. 더보기
[Java] 이클립스와 Mysql 8.0 연동하기 (JDBC 연결) 0. 준비물 Eclipse Mysql Mysql과 Eclipse를 연동해줄 JDBC 드라이버 1. 이클립스에서 프로젝트 생성하기 New -> Other -> web폴더 -> Dynamic Web Folder로 이동한다 2. 프로젝트 생성 프로젝트 이름 설정해주시고 Finish 3. Build Path 설정 4. Deployment Assembly 설정 아까와 같이 프로젝트의 Properties로 들어간다. 5. Eclipse와 mysql 연동확인 여기서 밑줄 친 1번은 mysql에서 설정하신 DB이름, 2번은 mysql 아이디, 3번은 mysql 비밀번호이다. 사용자에 맞게 고쳐서 코드를 쓰기 바랍니다. 6. 코드 import java.sql.Connection; import java.sql.Driver.. 더보기
[Java] 버튼의 이벤트 처리로 선 그리기 1. 소개 전에 포스팅에서는 간단히 JFrame을 이용해 컴포넌트를 넣을 수 있는 화면을 만들었다. 2. 이번 포스트에서 할 것 JFrame에 컴포넌트(Component) 넣기, 여기서는 JButton을 추가할 예정이다. 그리고 버튼으로 눌러서 뭐가 동작해야 만드는 게 느껴지겠죠? JButton에 이벤트 처리를 하고 버튼이 눌려졌을 때 선을 그려봅시다. 3. 코드 import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax... 더보기
[Java] Swing을 이용한 간단한 JFrame 화면 만들기 1. 기초 설명 모든 그래픽 인터페이스는 디스플레이를 하기 위해서는 어플리케이션의 프레임이 필요하다. 여기서 사용하는 프레임이 우리가 공부할 JFrame이다. 2. 주의 사항 Swing으로 프로그래밍을 할떄는 GUI를 만들 때 Event Dispatch Thread(EDT)를 활용한다. 이게 혹시나 있을 데드락(deadlock)이나 race condition으로 프로그래밍이 멈추는 것을 막아준다. EDT를 간단히 설명하자면 EDT는 작업하는 사람이고, Queue에서 작업물을 1개씩 가져온다. 만약에 작업하는 사람이 여럿이고 작업물 1개를 동시에 작업하면, 갱신이나 덮어씌어질 수있다. 3. 코드 import javax.swing.SwingUtilities; import javax.swing.JFrame; .. 더보기
[JAVA] 스택을 이용한 계산기(후위 표기법) 1. GUI 하나의 JPanel을 Container을 사용하듯이 사용했고 메인 JPanel에다가 서브 JPanel을 추가하면서 UI구성. 2. 변수 ArrayList postfix은 계산하기 편하게 하기위 후위표기법으로 수식을 저장한다. Stack opStack은 연산자를 저장하고 후위 표기법 규칙에 따라 postfix에 넣는다. StringBuilder sb은 숫자 버튼을 누르면서 숫자를 저장하는 변수 3. 알고리즘 1. 숫자버튼을 클릭할 때마다 event처리로 StringBuilder 변수 sb에 append로 숫자 저장 2. 연산자가 나올경우 저장된 숫자를 postfix에 저장 후 sb = ""로 초기화한다. 3. 연산자는 opStack이 비어있으면 추가. 4. 이미 opStack에 연산자가 있을경.. 더보기