본문 바로가기

반응형

언어

(188)
자바 멀티스레딩, 명품자바프로그래밍13장 * 자바에는 프로세스 개념이 존재하지 않고 스레드 개념만 존재하며 자바 가상 기계(JVM)는 멀티스레딩만 지원한다. 자바 스레드(java thread)란 JVM에 의해 스케쥴되는 실행 단위 코드 블록이다. * 하나의 JVM은 하나의 자바 으용프로그램만 실행한다. JVM이 실행될 때 JVM이 자바 으용프로그램을 로딩하여 실행시킨다. 자바 응용프로그램이 종료되면 JVM도 함께 종료된다. * 각 자바 응용프로그램은 별개의 메모리 영역에서 독립적으로 실행된다. JVM은 멀티스레딩을 지원하며 따라서 자바 응용프로그램은 하나 이상의 스레드를 생성할 수 있다. * 두 개의 자바 응용프로그램을 실행하는 경우를 보여 주는데, 하나의 응용프로그램이 실행되면 이를 위해 하나의 JVM이 실행되며, 두 응용프로그램이 서로 정보..
자바 멀티테스킹, 명품자바프로그래밍13장 * 멀티테스킹이란 멀티+테스킹의 합성어로서 다수의 작업을 동시에 처리하는 것을 말한다. * 공학적으로 멀티태스킹은 하나의 응용프로그램이 여러 작업(태스킹 혹은 task)을 동시에 처리한는 것을 말한다. * 컴퓨터에서 사용하는 스레드(thread)는 thread of control의 준말로서 프로그램 코드를 이동하면서 실행하는 하나의 실 혹은 제어의 개념이다. 하나의 스레드로 하나의 작업밖에 처리할 수 없다. * 응용프로그램 내에 여러 객체들이 존재한다. 객체들은 모두 메소드와 같은 프로그램 코드를 가지고 있다. 스레드 A와 스레드 B는 마치 바느질을 하는 것처럼 한 메소드에서 다른 메소드로의 호출에 따라 이동하면서 코드를 실행하고 있다. 두 개의 스레드는 상호 독립적이다. 즉, 이 응용프로그램은 2가지 ..
자바 페인팅 메커니즘, 명품자바12장 * 스윙에서 페인팅의 기본 골격은 JComponent에 구현되어 있다. 모든 스윙 컴포넌트들은 JComponent를 상속받음으로써 자연스럽게 스윙의 페인팅 메커니즘이 구현된다. 스윙의 페인팅과 관련하여 JComponent가 가지고 있는 메소드는 다음과 같다. void paint(Graphics g) // 컴포넌트 자신과 모든 자손 그리기 void paintComponent(Graphics g) // 컴포넌트 자신의 모양 그리기 void paintBorder(Graphics g) // 컴포넌트의 외곽 그리기 void paintChildren(Graphics g) // 컴포넌트의 자식들 그리기 * 스윙에서 컨테이너와 컴포넌트들이 그려지는 과정 컨테이너 container의 그리기 시작은 자신의 부모로부터 co..
자바 클리핑, 명품자바프로그래밍 12장 * 클리핑이란 Graphics를 이용하여 그리기를 실행한 결과 그래픽 대상 컴포넌트 내 클리핑 영역으로 지정된 부분만 보이도록 하는 기능이다. 클리핑이 이루어지는 사각형 영역을 클리핑 영역(clipping area)이라고 부르며 반드시 사각형으로만 설정된다. * Graphics는 클리핑을 지원한다. Graphics 객체는 현재의 클리핑 영역 정보를 계속 유지하며 도형 그리기 및 칠하기, 문자열 출력, 이미지 그리기 등의 메소드에서 클리핑을 실행한다. void setClip(int x, int y, int w, int h) // 그래픽 대상 컴포넌트의 (x, y) 위치에서 w x h의 사각형 영역을 클리핑 영역으로 지정 void clipRect(int x, int y, int w, int h) // Gra..
자바 이미지 그리기, 명품자바프로그래밍12장 * 스윙에서 이미지를 출력하기 위해서는 다음 2가지 방법이 사용된다. 1) JLabel 컴포넌트를 이용한 이미지 출력 JLabel을 이용하여 이미지를 그리는 방법으로 이미지를 JLabel에 부착되어 패널에 출력된다. ImageIcon image = new ImageIcon("image/apple.jpg"); JLabel label = new JLabel(image); panel.add(label); 이 방법은 간편하고 쉽다는 장점이 있지만 이미지가 원본 크기로만 그려지는 단점이 있다. 2) JLabel에 Graphics의 메소드를 이용한 이미지 출력 Graphics의 이미지 그리그 메소드를 호출하여 원하는 위치에, 원하는 크기로, 원하는 비율로 이미지를 그리는 방법이다. 이 방법은 이미지의 원본 크기와 ..
자바 그래픽 도형, 명품자바프로그래밍12장 * Graphics를 이용하여 선, 타원, 사격형, 둥근모서리사각형, 원호, 폐다각형 등을 그릴 수 있다. void drawLine(int x1, int y1, int x2, int y2) // (x1, y1)에서 (x2, y2)까지 선을 그린다. void drawOval(int x, int y, int w, int h) // (x, y)에서 w x h 크기의 사각형에 내접하는 타원을 그린다. void drawRect(int x, int y, int w, int h) // (x, y)에서 w x h 크기의 사각형을 그린다. void drawRoundRect(int x, int y, int w, int h, int arcWidth, int arcHeight) // arcWidth: 모서리 원의 수평 반지름..
자바 그래픽(2), 명품자바프로그래밍12장 * Graphics 클래스의 경로명은 java.awt.Graphics로서 자바의 초기부터 AWT와 함께 제공된 기능이다. 자바에서 그리기를 할 때 사용되는 유일한 객체로서, Graphics 클래스는 AWT나 스윙을 만론하고 모두 그리기에 사용된다. Graphics 객체는 그리기, 칠하기, 이미지 출력하기, 클리핑 등 GUI프로그래밍에 있어 필요한 모든 필드와 메소드를 제공한다. * Graphics가 제공하는 기능 1) 색상 선택하기 2) 문자열 그리기 3) 도형 그리기 4) 도형 칠하기 5) 이미지 그리기 6) 클리핑 * 문자열 그리기를 위한 Graphics 메소드 void drawString(String str, int x, int y) //str 문자열을 (x, y)영역에 그린다. 현재 Graphic..
자바 그래픽(1), 명품자바프로그래밍12장 * 거의 모든 GUI 시스템에서 그리기의 기본은 컴포넌트가 자신의 모양을 스스로 그린다는 점이다. * 모든 스윙 컴포넌트가 가지고 있는 메소드로서 스윙 컴포넌트가 자신의 내부를 그리는 paintComponent() 메소드의 원형 void paintComponent(Graphics g) * paintComponent()는 JComponent의 추상 메소드이므로 모든 스윙 컴포넌트가 오버라이딩하여 가지고 있다. * 스윙 컴포넌트의 paintComponent()가 호출되는 경우 1) 컴포넌트가 처음으로 그려질 때 2) 컴포넌트의 크기나 위치 변경 등 컴포넌트에 변화가 생길 때 3) 다른 윈도우에 의해 가려졌다가 드러날 때 4) 아이콘화되었다가 본래 크기로 복구할 때 5) 응용프로그램에서 컴포넌트의 repain..

반응형