<335FC0DAB9D92E687770>
|
|
- 아현 이
- 8 years ago
- Views:
Transcription
1 추상 메소드와 추상 클래스 -추상 메소드(abstract method) 선언되어 있으나 구현되어 있지 않은 메소드 추상 메소드 정의 접근 지정자 abstract 반환형 메소드이름(); -ex) public abstract int getvalue(); -추상 메소드는 서브 클래스에서 오버라이딩하여 구현 -추상 클래스(abstract class) 추상 클래스를 하나라도 가지면 추상 클래스임 클래스 앞에 반드시 abstract라고 선언해야 함 추상 메소드가 하나도 없지만 클래스 앞에 abstract로 선언한 경우 추상 클래스 특성 -추상 클래스의 객체는 생성할 수 없다. -추상 클래스 필요성 계층적 상속 관계를 갖는 클래스 구조를 만들 때 설계와 구현 분리 슈퍼 클래스에서는 개념적 특징 정의, 서브 클래스에서 구체적 행위 구현 -추상 클래스의 상속 추상 클래스를 상속받아, 추상 메소드를 구현하지 않으면 서브 클래스도 추상 클래스 됨. abstract로 정의하여야 한다
2 서브 클래스에서 추상 메소드를 구현하면 서브 클래스는 추상 클래스가 되지 않는다 가지 종류의 추상 클래스 -추상 클래스의 활용 예 -예제 5-6 : 추상 클래스의 구현 다음의 추상 클래스 Calculator를 상속받는 GoodCalc 클래스를 독자 임의로 작성하라
3 -예제 5-6 정답 21. 실세계의 인터페이스와 인터페이스의 필요성 그림 자바의 인터페이스 -인터페이스(interface) 모든 메소드가 추상 메소드인 클래스 인터페이스는 상수와 메소드만 갖는다. 필드는 없음
4 -인터페이스 정의 interface 키워드로 정의된 클래스 ex) public interface SerialDriver { } -인터페이스의 특징 메소드 선언 시 abstract 키워드를 사용하지 않아도 된다. 모든 메소드는 public으로 가정, public 접근 지정자 생략 가능 객체를 생성할 수 없음 레퍼런스 변수 타입으로 사용 가능 인터페이스의 메소드 속성 public, static, final으로 가정되므로 키워드 생략 가능 -자바 인터페이스 사례 -인터페이스의 필요성 인터페이스를 이용하여 다중 상속 구현 클래스는 다중 상속 불가 인터페이스는 명세서와 같음 구현은 블랙 박스와 같아 인터페이스의 사용자는 구현에 대해 알 필요가 없음 인터페이스만 정의하고 구현을 분리하여, 작업자가 다양한 구현을 할 수 있음 그림
5 -인터페이스 상속 인터페이스 간에도 상속 가능 인터페이스 상속하여 확장된 인터페이스 작성 가능 다중 상속 허용 -인터페이스 구현 인터페이스 구현 implements 키워드 사용 여러 개의 인터페이스 동시 구현 가능 상속과 구현이 동시에 가능 -인터페이스의 다중 구현
6 -추상 클래스와 인터페이스 비교 표 5.2 제6장 패키지 개념과 자바 기본 패키지 6.1 패키지 개념과 필요성 패키지 개념과 필요성 그림 샘플의 디렉터리 관리(패키지)
7 6.1.3 자바의 패키지 (package) -패키지란 서로 관련된 클래스와 인터페이스의 컴파일된 파일들을 하나의 디렉터리에 묶어 놓은 것 -하나의 응용프로그램은 여러 개의 패키지로 구성 하나의 패키지에 모든 클래스 파일을 넣어 둘 수 있음 -패키지는 jar 파일로 압축할 수 있음 예) JDK에서 제공하는 표준 패키지는 rt.jar에 압축 JDK에서 제공되는 클래스의 패키지 그림 패키지 사용하기, import문 -다른 패키지 갖다 쓰기 import를 이용하지 않는 경우 소스 내에서 매번 전체 패키지 이름과 클래스명을 써주어야 함 import 키워드 이용하는 경우 소스의 시작 부분에 사용하려는 패키지 명시 소스 내에서 클래스 명만 명시하면 된다
8 -import 사용 특정 클래스의 경로명만 포함하는 경우 import java.util.scanner; 패키지 내의 모든 클래스를 포함시키는 경우 import java.util.*; *는 현재 패키지 내의 클래스만을 의미하며 하위 패키지의 클래스까지 포함하지 않는다 클래스 경로 -클래스의 위치(경로) 지정 클래스 탐색 경로를 지정하는 방법 2 가지 클래스 경로의 환경 변수 : 시스템 환경 변수 CLASSPATH java의 옵션 classpath 그림 6.3 그림 6.4 -실행 시 클래스 파일이 존재하는 패키지 디렉터리 정보를 -classpath 옵션에 지정
9 -CLASSPATH 지정 방법 그림 수동으로 패키지를 만드는 과정 -수동으로 패키지를 만드는 과정 1. 패키지로 사용할 디렉터리 생성 2. 자바 소스 내의 패키지 선언 package 패키지 이름; 이 소스 파일이 컴파일되면 생성된 클래스 파일이 속할 패키지 이름 선언 3. 자바 소스를 컴파일한 클래스 파일을 패키지 디렉터리에 저장 -패키지에 속한 자바프로그램 실행 main() 메소드를 가진 클래스의 정확한 경로명 지정 패키지가 포함된 디렉터리로 이동하여 경로명을 지정하여 실행하거나 임의의 디렉터리에서 java -classpath (패키지경로명) 클래스 이름으로 실행 -패키지를 포함하는 응용프로그램 개발 사례 1 -패키지 디렉터리 chapter6 생성 현재 디렉터리 C:\Temp C:\Temp\chapter6 디렉터리 생성 -소스 파일 내에 패키지 선언 -Hello.java 컴파일 C:\Temp>javac Hello.java 현재 디렉터리에서 컴파일 Hello.class 생성
10 -Hello.class 파일 복사 혹은 이동 Hello.class 파일을 C:\Temp에서 C:\Temp\chapter6로 복사 혹은 이동 -실행 C:\temp>java chapter6.hello 현재 디렉터리에서 실행 정상적으로 실행됨 -패키지를 포함하는 응용프로그램 개발 사례 2 -chapter6 디렉터리 생성하지 않음 현재 디렉터리 C:\Temp -컴파일 C:\Temp>javac -d. Hello.java 현재 디렉터리에서 컴파일 -d 옵션 : 패키지 디렉터리 자동 생성. : 현재 디렉터리를 기준으로 클래스 파일을 찾도록 지시 결과 : Hello.class 파일을 C:\Temp\chapter6에 생성 -실행 C:\ temp>java chapter6.hello 현재 디렉터리에서 실행 정상적으로 실행됨 -사례 2의 컴파일 과정 및 실행 java -d. Hello.java 로 컴파일 하면 현재 디렉터리 (.) 밑에 chapter6 디렉터리 자동 생성되고 동시에 컴파일된 클래스 파 일이 생성됨 그림
11 6.1.8 이클립스에서 쉽게 패키지 만들기 예제로 사용할 샘플 소스(5장의 예제 5-6) 프로젝트 작성(프로젝트 이름 : PackageEx) 그림
12 패키지 lib 작성 그림 패키지 app 작성 그림
13 패키지 작성이 완료된 결과 그림 클래스 Calculator 만들기 그림
14 Calculator 소스 수정 그림 6.12 그림
15 그림 프로젝트 PackageEx 실행 그림 패키지의 특징 -패키지의 특징 패키지 계층구조 클래스나 인터페이스가 너무 많아지면 관리의 어려움 관련된 클래스 파일을 하나의 패키지로 계층화하여 관리하면 관리 쉬움 패키지별 접근 제한 default로 선언된 클래스나 멤버는 동일 패키지 내의 클래스들이 자유롭게 접근하도록 허용 동일한 이름의 클래스와 인터페이스의 사용 가능 서로 다른 패키지에 이름이 같은 클래스와 인터페이스 존재 가능 높은 소프트웨어 재사용성 오라클에서 제공하는 자바 API는 패키지로 구성되어 있음 java.lang, java.io 등의 패키지들 덕분에 일일이 코딩하지 않고 입출력 프로그램을 간단 히 작성할 수 있음 자바 JDK의 패키지 구조 -JDK 패키지
16 자바에서는 관련된 클래스들을 표준 패키지로 묶어 사용자에게 제공 자바에서 제공하는 패키지는 C언어의 표준 라이브러리와 유사 JDK의 표준 패키지는 rt.jar에 담겨 있다. C:\Program Files\Java\jdk1.6.0_16\jre\lib\rt.jar 그림 자바 패키지 구조 주요 패키지 -java.lang
17 자바 language 패키지 스트링, 수학 함수, 입출력 등 자바 프로그래밍에 필요한 기본적인 클래스와 인터페이스 자동으로 import 됨 - import 문이 필요없음 -java.util 자바 유틸리디 패키지 날짜, 시간, 벡터, 해쉬 테이블 등과 같은 다양한 유틸리티 클래스와 인터페이스 제공 -java.io 키보드, 모니터, 프린터, 디스크 등에 입출력을 할 수 있는 클래스와 인터페이스 제공 -java.awt 자바 GUI 프로그래밍을 위한 클래스와 인터페이스 제공 -javax.swing 자바 GUI 프로그래밍을 위한 스윙 패키지 자바 API 참조 -자바 API의 상세 정보 Oracle Technology Network( 온라인으로 API 규격제공 그림 Object 클래스 -특징 java.lang 패키지에 포함 자바 클래스 계 층 구조의 최상위에 위치 모든 클래스의 수퍼 클래스 -주요 메소드 표 6.1 메소드 설명
18 protectedobject clone() 현 객체와 똑같은 객체를 만들어 반환. 오버라이딩 필요 booleanequals(objectobj) obj가 가리키는 객체와 현재 객체가 비교하여 같으면 true반환 ClassgetClass() 현 객체의 런타임 클래스를 반환 inthashcode() 현 객체에 대한 해쉬 코드 값 반환 StringtoString() 현 객체에 대한 스트링 표현을 반환 void notify() 현 객체에 대해 대기하고 있는 하나의 쓰레드를 깨운다. void notifyall() 현 객체에 대해 대기하고 있는 모든 쓰레드를 깨운다. void wait() 현 객체의 다른 쓰레드가notify() 또는 notifyall() 메소드를 호출할 때까지 현 쓰레드를 대기하게 한다 객체 속성 -객체를 문자열로 변환 -String tostring() 객체를 텍스트 형태로 표현한 문자열로 반환 반환되는 문자열 : 클래스 이름@객체의 hash code 객체와 문자열이 + 연산이 되는 경우 객체의 tostring() 메소드를 호출
19 -새로운 tostring() 만들기 객체 비교 -객체 레퍼런스의 동일성 비교 : = 연산자 이용 -객체 내용 비교 서로 다른 두 객체가 같은 내용물인지 비교 boolean equals(object obj) 이용
20 -예제 6-1 : Rect 클래스 만들고 equals() 만들기 int 타입의 width, height의 필드를 가지는 Rect 클래스를 작성하고, 두 Rect 객체의 width, height 필드에 의해 구성되는 면적이 같으면 두 객체가 같은 것으로 판별하도록 equals()를 작성하라. Rect 생성자에서 width, height 필드를 인자로 받아 초기화한다 Wrapper 클래스 -자바 기본 데이터 타입을 클래스화한 8개 클래스 표 6.2 기본 데이터 타입 byte short int long char float double boolean Wrapper클래스 Byte Short Integer Long Character Float Double Boolean -용도 기본 데이터 타입을 사용할 수 없고 객체만 사용하는 컬렉션에 기본 데이터 타입을 Wrapper 클래스로 만들어 사용 Wrapper 객체 생성 -기본 데이터 값을 인자로 Wrapper 클래스 생성자 호출 -해당 데이터 값을 나타내는 문자열을 생성자 인자로 사용 가능 Boolean, Short, Byte, Integer, Long, Double, Float 경우
21 -Float는 double 타입의 값을 생성자의 인자로 사용 가능 주요 메소드 가장 많이 사용하는 Integer 클래스의 주요 메소드 표 6.3 메소드 staticintbitcount(inti) float floatvalue() intintvalue() long longvalue() short shortvalue() staticintparseint(string s) staticintparseint(string s, intradix) static Sting tobinarystring(inti) static Sting tohexstring(inti) static Sting tooctalstring(inti) static Sting tostring(inti) 설명 이진수 표현에서 1을 개수를 반환 float타입으로 변환된 값 반환 int타입으로 변환된 값 반환 long 타입으로 변환된 값 반환 short 타입으로 변환된 값 반환 스트링을10진 정수로 변환된 값 반환 스트링을 지정된진법의 정수로 변환된 값 반환 이진수 표현으로 변환된 스트링 반환 16진수 표현으로 변환된 스트링 반환 8진수 표현으로 변환된 스트링 반환 정수를 스트링으로 변환하여 반환 Wrapper 활용 -Wrapper 객체로부터 기본 데이터 타입 알아내기 -문자열을 기본 데이터 타입으로 변환
22 -기본 데이터 타입을 문자열로 변환 -예제 6-2 : Wrapper 클래스 활용 다음은 Wrapper 클래스를 활용하는 예이다. 다음 프로그램의 결과는 무엇인가? 박싱과 언박싱 -박싱(boxing) 기본 데이터 타입을 Wrapper 클래스로 변환하는 것 -언박싱(unboxing) 반대의 경우를 언박싱이라고 한다 Auto boxing & unboxing -JDK 5.0 이상부터 지원 -Auto boxing
23 기본 데이터 타입을 자동으로 Wrapper 클래스로 변환 -Auto unboxing Wrapper 클래스를 자동으로 기본 데이터 타입으로 변환 -예제 6-3 : 박싱 언박싱의 예 다음 코드에 대한 결과는 무엇인가? String의 생성과 특징 -String - java.lang.string String 클래스는 하나의 스트링만 표현 -String 생성자 표 6.4 생성자 설명 String() String(byte[] bytes) String(String original) String(StringBuffer buffer) 빈스트링 객체 생성 플랫폼의 기본 문자집합을 이용하여 바이트배열을 디코딩하 여스트링 객체 생성 인자로 주어진 스트링과 똑같은 스트링 객체를 생성 스트링 버퍼에 포함된 일련의 문자들을 나타내는 스트링 객 체 생성
24 스트링 리터럴과 new String() -스트링 생성 단순 리터럴로 생성, String s = "Hello"; JVM이 리터럴 관리, 응용프로그램 내에서 공유됨 String 객체로 생성, String t = new String("Hello"); 힙에 String 객체 생성 스트링 객체의 주요 특징 -스트링 객체는 수정 불가능 -==과 equals() 두 스트링을 비교할 때 반드시 equals()를 사용하여야 함 equals()는 내용을 비교하기 때문 주요 메소드 표 6.5 메소드 charcharat(int index) 설명 지정된 인덱스에 있는 문자값을 반환 intindexof(intch) ch 문자가 있는 인덱스 리턴. 없으면 -1리턴 fromindex위치부터 끝까지 문자 ch 탐색. 인덱스 리턴. 없 inindexof(intch, intfromindex) 으면 -1리턴 String concat(string str) 지정된 스트링을 현재 스트링 뒤에 덧붙인 스트링 반환 boolean contains(charsequence s) 지정된일련의 문자들을 포함하고 있으면 true 반환 intlength() 스트링의 길이 반환 String replace(charsequece target지정하는 일련의 문자들을 replacement가 지정하는 target, Charsequence 문자들로 변경한 스트링 반환 replacement)
25 String[] split(string regex) String substring(intbeginindex) String tolowercase() String touppercase() String trim() 정규식에 일치하는 부분을 중심으로 스트링 분리하여 스트 링 배열로 반환 지정된 인덱스부터 시작하는 서브 스트링 반환 스트링을 소문자로 변경한 스트링 반환 스트링을 대문자로 변경한 스트링 반환 스트링 앞뒤의 공백문자들을 제거한 스트링 반환 문자열 비교 -int compareto(string anotherstring) 문자열이 같으면 0을 리턴 비교 연산자 ==는 레퍼런스를 비교하므로 문자열 비교에는 사용할 수 없다 문자열 연결 -String concat(string str) 자바에서 스트링 연결 연산자 + 지원 + 연산에서 문자열이 인자로 포함되어 있으면 산술 연산이 아닌 문자열 연결 연산으로 간주. -객체가 문자열 연결 연산에 포함되어 있는 경우 tostring() 메소드를 호출하여 객체를 문자열로 변환한 후 문자열 연결 -기본 데이터 타입 그대로 문자열로 변환된 후에 문자열 연결 -String 클래스의 concat(string str) 메소드를 이용하여 스트링 연결 -기존 String 객체에 연결되지 않고 새로운 스트링 객체를 생성하여 리턴
26 concat()은 새로운 문자열을 생성 문자열 내의 공백 제거, 문자열의 각 문자 접근 -공백 제거 String trim() 스트링 앞 뒤 공백 문자(tab, enter, space) 제거한 스트링 리턴 -문자열의 문자 char charat(int index) 스트링에 포함된 각 문자 접근 -예제 6-4 : String 클래스 메소드 활용 String 클래스의 다양한 메소드를 활용하는 예를 보여라
27 -예제 실행 과정 StringBuffer 클래스 -java.lang.stringbuffer 스트링과 달리 객체 생성 후 스트링 값 변경 가능 append와 insert 메소드를 통해 스트링 조작 StringBuffer 객체의 크기는 스트링 길이에 따라 가변적 -생성자 표 6.6 생성자 설명 StringBuffer() 문자를 포함하고 있지 않고 초기 크기가 16인 스트링 버퍼 생성 StringBuffer(charSequenceseq)seq가지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성 StringBuffer(int capacity) 문자를 포함하고 있지 않고 지정된초기 크기를 갖는 스트링 버퍼 생성 StringBuffer(String str) 지정된 스트링으로 초기화된 스트링 버퍼 생성 주요 메소드 메소드 표 6.7 설명 StringBuffer append(string str) 지정된 스트링을스트링 버퍼에 덧붙인다
28 StringBuffer append(stringbuffersb) int capacity() StringBuffer delete(int start, int end) StringBuffer insert(int offset, String str) StringBuffer replace(int start, int end, String str) StringBuffer reverse() voidsetlength() 지정된스트링 버퍼를 스트링 버퍼에 덧붙인다. 현재 스트링 버퍼의 크기 반환 지정된서브 스트링을스트링 버퍼에서 제거 지정된스트링을스트링 버퍼의 특정 위치에 삽입 스트링버퍼 내의 서브 스트링을 지정된 스트링으 로 대치 스트링 버퍼 내의 문자들을 반대 순서로 변경 스트링버퍼 내 저장된 문자열 길이를 설정. 현재 길이보다 큰 경우 널 문자로 채우며 작은 경우는 문자열이 잘린다 StringBuffer의 메소드 활용 예 -예제 6-5 : StringBuffer 클래스 메소드 활용 StringBuffer 클래스의 메소드를 이용하여 문자열을 조작하는 예를 보여라
29 StringTokenizer 클래스 -java.util.stringtokenizer 하나의 스트링을 구분자로 분리하여 토큰 형태로 파싱 스트링을 구분할 때 사용되는 문자들을 구분 문자(delimeter)라고 함 -위의 예에서 & 가 구분 문자 -토큰(token) 구분 문자로 분리된 스트링 -String 클래스의 split 메소드를 이용하여 동일한 구현 가능 생성자와 주요 메소드 -생성자 표 6.8 생성자 설명 StringTokenizer(String str) StringTokenizer(String str, String delim) StringTokenizer(String str, String delim, booleanreturndelims) 지정된 스트링으로 초기화된 스트링토크나이저 생성 지정된 스트링과 구분 문자로 초기화된 스트링토 크나이저 생성 지정된 스트링과 구분 문자로 초기화된 스트링토 크나이저 생성. returndelims가 true이면 구분 문자로 지정된 문자도 분리된 토큰에 포함된다
30 -주요 메소드 메소드 intcounttokens() booleanhasmoretokens() String nexttoken() StringnextToken(String delim) 표 6.9 설명 스트링에남아 토큰 수 반환 스트링에 토큰이 남아 있으면 true 반환 다음 토큰 반환 지정된분리자에 대한 다음 토큰 반환 StringTokenizer 객체 생성과 문자열 파싱 -예제 6-6 : StringTokenizer 클래스 메소드 활용 홍길동/장화/홍련/콩쥐/팥쥐 문자열을 / 를 구분 문자로 하여 토큰을 분리하여 각 토큰을 출력하라
31 Math 클래스 -java.lang.math 기본적인 산술 연산을 수행하는 메소드 제공 모든 멤버 메소드는 static으로 정의됨 객체를 만들어서 사용할 필요 없음 주요 메소드 double 타입에 대한 주요 메소드 메소드 static doubleabs(double a) static double cos(double a) static double sin(double a) static double tan(double a) static double exp(double a) static double ceil(double a) static double floor(double a) 표 6.10 설명 절대값 반환 cosine 값 반환 sine 값 반환 tangent값 반환 값 반환 지정된실수보다 크거나 같은 수 중에서 가장 작은 정수를 실수 타입으로 반환 지정된실수보다 작거나 같은 수 중에서 가장 큰 정 수를 실수 타입으로 반환 static double max(double a, double b)두 수 중에서 큰 수 반환 static double min(double a, double b) 두 수 중에서 작은 수 반환 static double random() static double rint(double a) static double round(double a) static double sqrt(double a) 0.0보다 크거나 같고 1.0보다 작은 임의의 수 반환 지정된 실수와 가장근접한 정수를 실수 타입으로 반환 지정된 실수를 소수 첫째 자리에서 반올림한 정수 를 실수 타입으로 반환 제곱근을 반환 Math 클래스를 활용한 난수 발생 -난수 발생 static double random() 0.0 이상 1.0 미만의 임의의 double 값을 반환
32 위의 코드에서 round() 메소드는 Math. round(55.3)은 55.0을 리턴하며, Math. round(55.9)는 56.0을 리턴 -java.util의 Random 클래스를 이용하면 좀 더 다양한 형태로 난수 발생 가능 -예제 6-7 : Math 클래스 메소드 활용 Math 클래스의 다양한 메소드 활용 예를 보여라. 제7장 입출력 스트림 7.1 스트림 스트림이란? 데이터의 흐름 입출력 스트림은 입출력 장치와 프로그램 사이의 일련의 데이터 흐름을 의미 스트림을 통해 흘러가는 데이터의 기본 단위는 바이트 그림 7.1 -스트림의 특징 스트림은 단방향이다. 방향에 따라 입력 스트림과 출력 스트림으로 나뉜다
33 스트림은 선입선출, 즉 FIFO 구조이다. 스트림은 연결될 수 있다. 스트림은 지연될 수 있다. 입력 스트림이 흐르는 통로인 파이프가 비어 있다면, 컴퓨터는 읽어갈 데이터가 없으므 로 기다리게 되고, 반대로 출력 스트림이 흐르는 통로인 파이프에 데이터가 꽉 차 있다 면 컴퓨터는 빈 공간이 생길 때까지 기다린다. 그림 바이트 스트림 클래스 계층 구조 문자 스트림 클래스 계층 구조
34 7.1.4 바이트 스트림 -바이트 스트림 바이트 단위의 바이너리 값을 읽고 쓰는 스트림 모든 바이트 스트림은 InputStream과 OutputStream의 서브 클래스 -바이트 스트림 클래스 InputStream/OutputStream java.io 패키지에 포함 추상 클래스로서 바이트 입출력 스트림을 나타내는 모든 클래스의 수퍼 클래스 FileInputStream/FileOutputStream 파일로부터 바이트 데이터를 읽거나 파일로 저장하는 클래스 바이너리 데이터인 raw 데이터의 입출력. DataInputStream/DataOutputStream 자바의 기본 데이터 타입의 값을 바이너리 값으로 입출력 String을 바이너리 값으로 입출력 FileInputStream 사용 예 -c:\test.txt 파일로부터 바이트 단위로 읽을 수 있는 바이트 스트림 생성 -파일 전체를 읽어 화면에 출력 -예제 7-1 : System.ini 파일을 읽어 화면에 출력하기 FileInputStream을 이용하여 사용자 컴퓨터의 windows 디렉터리에 있는 System.ini 파 일을 읽고 화면에 출력하라. System.ini 파일은 텍스트 파일이다
35 7.1.6 FileOutputStream을 이용한 파일 출력 스트림 -c:\test.out 파일에 바이트 단위로 쓸 수 있는 바이트 스트림을 생성 코드 -파일에 데이터 기록 -c:\test.out 파일에 기록된 내용 -예제 7-2 : FileOutputStream과 DataOutputStream을 이용한 파일 출력 DataOutputStream을 이용하여 자바 기본 데이터 타입 값을 tmp.out 파일에 저장하고 파 일의 내부를 살펴보라. -예제 실행 결과 - 출력 파일의 내용 출력된 tmp.out 파일은 텍스트 파일이 아니므로 바이너리로 파일을 열어 16진수 형식으 로 보면 다음과 같다. -예제 7-3 : FileInputStream과 DataInputStream을 이용하여 파일로부터 기본 데이터 타
36 입 읽기 DataInputStream을 이용하여 앞의 예제에서 만든 tmp.out 파일을 읽어 값을 화면에 출 력하고 앞 예제에서 기록된 대로 읽혀졌는지 확인하라 문자 스트림 -문자 스트림 유니 코드로 된 문자 단위의 데이터가 흐르는 스트림 로컬 문자 집합으로 데이터를 자동 변환 모든 문자 스트림은 Reader과 Writer의 서브 클래스이다. -바이트 스트림과 차이점 바이트 스트림은 이미지 파일, 동영상 파일 등과 같은 바이너리 데이터 스트림 처리에 적합 문자 스트림은 문자 데이터 스트림만 처리할 수 있다. -문자 입력 스트림의 종류 Reader, InputStreamReader, FileReader 등 -문자 출력 스트림의 종류 Writer, OutputStreamWriter, FileWriter 등 -문자 스트림의 종류 Reader/Writer java.io 패키지에 포함 추상 클래스로 문자 입출력 스트림을 나타내는 모든 클래스의 수퍼 클래스 InputStreamReader/OutputStreamWriter 바이트 스트림과 문자 스트림을 연결시켜주는 브릿지 역할 지정된 문자집합을 이용하여 입력 스트림에서 바이트를 읽어 문자로 인코드 또는 문자 를 바이트로 디코드하여 출력 스트림으로 출력 FileReader/FileWriter 텍스트 파일로 문자 데이터를 입출력 한다
37 FileInputStream과 FileOutputStream을 이용하여 바이트 스트림을 문자 스트림으로 변환 -예제 7-4 : System.ini 파일 읽기 FileReader를 이용하여 사용자 컴퓨터의 windows 디렉터리에 있는 System.ini 파일을 읽고 화면에 출력하라. System.ini 파일은 텍스트 파일이다. -예제 7-5 : 문자 집합 지정이 잘못된 한글 파일 읽기 InputStreamReader의 문자 집합을 US-ASCII로 지정하여 한글 파일을 읽고 출력하라. 그림
38 -예제 7-6 : 한글 파일 읽기 예제 7-5의 인코딩을 수정하여 정상적으로 한글 파일을 읽고 출력하라 FileWriter 사용 예 -c:\test.txt 파일에 문자 출력 스트림을 생성하는 코드 -파일에 문자 출력 -예제 7-7 : 키보드 입력을 파일로 저장하기 키보드에서 입력받은 데이터를 c:\temp\test.txt 파일에 저장하는 코드를 작성하라
39 7.1.9 버퍼 입출력 스트림과 버퍼 입출력의 특징 -버퍼 입출력(Buffered I/O)이란? 버퍼 입출력은 입출력 장치와 프로그램 사이에 버퍼를 두어 효율적으로 입출력 처리 -버퍼 입출력의 필요성 프로그램의 실행 속도와 입출력 장치의 데이타 처리 속도의 불일치에 대해 대처하기 쉬움 그림 버퍼 스트림의 종류 -바이트 스트림 바이트 단위의 바이너리 데이타를 처리하는 버퍼 스트림 BufferedInputStream와 BufferedOutputStream -문자 스트림 유니코드의 문자 데이타만을 처리하는 버퍼 스트림 BufferedReader와 BufferedWriter -BufferedOutputStream 사용 예 20바이트 크기의 버퍼를 사용하고, System.out 표준 스트림에 출력하는 버퍼 스트림 생성 파일 전체를 읽어 화면에 출력 버퍼에 남아 있는 데이터 출력
40 -예제 7-8 : 버퍼 출력 이용 예제 버퍼 크기가 5인 출력 버퍼 스트림을 표준 출력 스트림과 연결하고 키보드에서 입력받은 문자를 출력 스트림에 출력하고, 입력의 끝을 알리면 버퍼에 남아 있는 모든 문자를 출력하 는 프로그램을 작성하라 File 클래스 -File 클래스의 특징 파일의 경로명을 다루는 클래스 File 클래스는 파일과 디렉터리 경로명의 추상적 표현 파일 클래스의 객체는 파일 또는 디렉터리를 다룸 File 클래스는 파일의 삭제, 디렉터리 생성 등과 같은 파일 관리 파일의 내용 읽고 쓰기 - 파일 스트림 이용 File 객체와 스트림을 연결하여 파일 접근 File 클래스 생성자와 주요 메소드 표
41 File 클래스 사용 예 -c:\test.txt 파일을 나타내는 File 객체를 생성 -파일 관리 파일 타입 구분하기, isfile()과 isdirectory() 디렉터리에 있는 파일 리스트 얻기, list() -예제 7-9 : File 클래스 활용한 파일 관리 File 클래스를 이용하여 파일의 타입을 알아내고, 디렉터리에 있는 파일들을 나열하며, 디 렉터리 이름을 변경하는 프로그램을 작성해보자
42 -예제 7-10 : 텍스트 파일 복사 문자 스트림을 이용하여 텍스트 파일을 복사하는 프로그램을 작성하라 그림 7.5 -예제 7-11 : 바이너리 파일 복사 바이트 스트림을 이용하여 바이너리 파일을 복사하는 프로그램을 작성하라 그림 7.6 제8장 제네릭과 컬렉션 8.1 컬렉션(collection)의 개념
43 8.1.1 컬렉션 -컬렉션은 요소(element)라고 불리는 가변 개수의 객체들의 모음 객체들의 컨테이너라고도 불림 -컬렉션 클래스 사례 Vector, ArrayList, Hashtable, LinkedList, HashMap, HashSet, Stack -java.util 패키지에서 제공 -다양한 객체들을 삽입, 삭제, 검색 등 관리하는데 사용됨 배열과 컬렉션의 개념 차이 그림 컬렉션을 위한 인터페이스와 클래스 그림 Vector 클래스 -Vector의 특성 java.util.vector 여러 객체들을 삽입, 삭제, 검색하는 컨테이너 클래스
44 배열의 길이 제한 단점 극복 원소의 개수가 넘쳐나면 자동으로 늘어나는 가변 길이 Vector에 삽입 가능한 것 객체만 가능 null도 삽입 가능 기본 데이터 타입은 불가능 -Wrapper 객체로 만들어 삽입 가능 Vector에 객체 삽입 벡터의 맨 뒤에 객체 추가 : 공간이 모자라면 자동 늘림 벡터 중간에 객체 삽입 : 삽입된 뒤의 객체는 뒤로 하나씩 이동 Vector에서 객체 삭제 임의의 위치에 있는 객체 삭제 가능 : 객체 삭제 후 하나씩 앞으로 자동 이동 Vector 객체의 내부 구성 그림 Vector 클래스의 주요 메소드 표 8.1 메소드 설명 boolean add(e e) 벡터의 맨 뒤에 요소 추가 void add(int index, E element) 지정된 인덱스에 지정된 객체를 삽입 int capacity() 벡터의 현재 용량 반환 booleanaddall(collection<? extends E> c) c가 지정하는 컬렉션의 모든 요소를 벡터의 맨 뒤에 추가 void clear() 벡터의 모든 요소 삭제 boolean contains(object o) 벡터가 지정된 객체를 포함하고 있으면 true 반환 E elementat(int index) 지정된 인덱스의 요소 반환 E get(int index) 지정된 인덱스의 요소 반환 intindexof(object o) 지정된 객체와 같은 첫 번째 요소의 인덱스 반환. 없으면 -1 반환 booleanisempty() 벡터가 비어있으면 true 반환 E remove(int index) 지정된 인덱스의 요소 삭제
45 boolean remove(object o) void removeallelements() int size() Object[] toarray() 지정된 객체와 같은 첫 번째 요소를 벡터에서 삭제 벡터의 모든 요소를 삭제하고 크기를 0으로 만듬 벡터가 포함하는 요소의 개수 반환 벡터의 모든 요소를 포함하는 배열을 반환 그림 컬렉션과 자동 박싱/언박싱 -JDK 1.5 이전 버전 Wrapper 클래스를 이용하여 기본 타입을 객체로 만들어 사용 컬렉션으로부터 요소를 얻어올 때도 해당 타입의 값을 얻어오는 메소드를 호출
46 -JDK 1.5부터 자동 박싱/언박싱의 기능 추가 -예제 8-1 : 벡터 내의 모든 요소 객체 출력하기 다음 코드에 대한 결과는 무엇인가? -예제 8-2 : 벡터에 있는 객체 중에서 정수 값만 모두 더하기 벡터에 있는 객체 중에서 정수 값만 모두 더하는 프로그램을 작성해보라
47 8.1.8 ArrayList 클래스 -ArrayList의 특성 java.util.arraylist 가변 크기 배열을 구현한 클래스 ArrayList에 삽입 가능한 것 객체만 가능 기본 데이타 타입은 불가능 Wrapper 객체로 만들어 삽입 가능 null도 삽입 가능 ArrayList에 객체 삽입 리스트의 맨 뒤에 객체 추가 : 공간이 모자라면 자동 늘림 리스트의 중간에 객체 삽입 : 삽입된 뒤의 객체는 뒤로 하나씩 이동 ArrayList 에서 객체 삭제 임의의 위치에 있는 객체 삭제 가능 : 객체 삭제 후 하나씩 앞으로 이동 벡터와 거의 유사하며 자동으로 스레드 동기화를 지원하지 않는 점이 가장 큰 차이 다수의 스레드가 동시에 ArrayList에 접근할 때 ArrayList는 동기화시키지 않음 ArrayList에 접근하는 곧에서 스레드 동기화를 수행하여야 함 ArrayList 객체의 내부 구성 그림 ArrayList 클래스의 주요 메소드 메소드 boolean add(e e) void add(int index, E element) 표 8.2 설명 ArrayList의 맨 뒤에 요소 추가 지정된 인덱스에 지정된 객체를 삽입 booleanaddall(collection<? E> c) void clear() boolean contains(object o) extendsc가 지정하는 컬렉션의 모든 요소를 ArrayList의 맨 뒤에 추가 ArrayList의 모든 요소 삭제 ArrayList가 지정된 객체를 포함하고 있으면 true 반환
48 E elementat(int index) E get(int index) int indexof(object o) boolean isempty() E remove(int index) boolean remove(object o) int size() Object[] toarray() 지정된 인덱스의 요소 반환 지정된 인덱스의 요소 반환 지정된 객체와 같은 첫 번째 요소의 인덱스 반환. 없으면 -1 반환 ArrayList가 비어있으면 true 반환 지정된 인덱스의 요소 삭제 지정된 객체와 같은 첫 번째 요소를 ArrayList에서 삭제 ArrayList가 포함하는 요소의 개수 반환 ArrayList의 모든 요소를 포함하는 배열을 반환 그림
49 -예제 8-3 : ArrayList 내의 모든 요소 객체 출력하기 다음 코드에 대한 결과는 무엇인가? Hashtable 클래스 -Hashtable의 특성 java.util.hashtable 삽입 및 검색이 빠른 특징 키(key)와 값(value) 사용 키와 값이 한쌍으로 삽입됨 키는 해쉬 테이블에 삽입되는 위치를 결정하는데 내부적으로 이용 값을 검색하기 위해서는 키를 반드시 이용함 키, 값 모두 객체만이 이용됨. 기본 데이터 타입은 사용할 수 없음 -Hashtable에 삽입, 검색하는 예 Hashtable의 내부 구성과 put(), get() 메소드 그림
50 Hashtable 클래스의 주요 메소드 표 8.3 메소드 void clear() boolean contains(object o) booleancontainskey(object key) booleancontainsvalue(object value) Enumeration<V> elements() V get(object key) booleanisempty() Enumeration<K> keys() V put(k key, V value) V remove(object key) int size() 설명 Hashtable의 모든 키 삭제 Hashtable의 어떤 키가 지정된 객체에 매핑되면 true 반환 Hashtable이 지정된 키를 포함하고 있으면 true 반환 Hashtable이 하나 이상의 키를 지정된 값에 매핑시킬 수 있으면 true 반환 Hashtable의 모든 값의 enumeration 반환 지정된 키에 맵핑되는 값을 반환하거나 맵핑되는 값이 없 으면 null을 반환 Hashtable에 키가 없으면 true 반환 Hashtable의 모든 키의 enumeration 반환 Hashtable에 key를 value에 매핑 지정된 키와 이에 매핑된 모든 값들을 Hashtable에서 삭제 Hashtable이 포함하는 키의 개수 반환 해쉬테이블의 조작 사례
51 그림 8.8 -예제 8-4 : Hashtable 내의 모든 값 알아내기 다음 코드에 대한 결과는 무엇인가? -예제 8-5 : Hashtable 검색 Scanner 클래스를 이용하여 이름, 전화번호를 입력받아 이름을 키로 하여 해시테이블에 저장하고 이름으로 전화번호를 검색하는 프로그램을 작성하라. 그림
52 LinkedList 클래스 -LinkedList의 특성 java.util.linkedlist List 인터페이스를 구현한 클래스 Vector, ArrayList 클래스와 매우 유사 요소 객체들은 양방향으로 연결되어 관리됨 요소 객체는 맨 앞, 맨 뒤에 추가 가능 요소 객체는 인덱스를 이용하여 중간에 삽입 가능 맨 앞이나 맨 뒤에 요소를 추가하거나 삭제할 수 있어 스택이나 큐로 사용 가능 LinkedList의 내부 구성과 put(), get() 메소드 그림 Iterator 활용 -Iterator 인터페이스 Vector, ArrayList, LinkedList와 같은 리스트 자료구조에서 요소를 순차적으로 검색할 때 Iterator 인터페이스를 사용 iterator() 메소드를 호출하면 Iterator 객체를 반환 Iterator 객체는 검색한 위치를 기억하고 있어 인덱스 없이 순차적 검색이 가능 Iterator 인터페이스 메소드 표 8.4 메소드 설명 booleanhasnext() 다음 반복에서 사용될 요소가 있으면 true 반환 E next() 다음 요소 반환 void remove() 마지막으로 반환된 요소를 제거
53 -예제 8-6 : Iterator를 이용하여 ArrayList 내의 모든 요소 객체 출력하기 다음 코드에 대한 결과는 무엇인가? Collections 클래스 활용 -Collections 클래스 java.util 패키지에 포함 컬렉션에 대해 연산을 수행하고 결과로 컬렉션을 반환 주요 메소드 컬렉션에 포함된 요소들을 소팅하는 sort() 메소드 요소의 순서를 반대로 하는 reverse() 메소드 요소들의 최대, 최소값을 찾아내는 max(), min() 메소드 특정 값을 검색하는 binarysearch() 메소드 모두 static 메소드 -예제 8-7 : Collections 클래스의 활용 Collections를 사용한 다음 코드에 대한 결과는 무엇인가?
54 JDK 1.5 이전 자바의 컬렉션 문제점 -삽입되는 원소 객체는 사실 모두 Object 타입이어야 함 int, double 등의 기본 타입 데이타는 직접 삽입될 수 없음 -객체를 컬렉션에서 꺼내올 때 다운 캐스팅 필요 Object 타입에서 실제 클래스 타입으로의 다운 캐스팅 불편 JDK 1.5 이전 버전의 Vector 클래스의 예 -JDK 1.5 이전 버전의 Vector 클래스 예제 제네릭 도입 이전에는 Object 클래스를 이용하여 모든 객체들을 참조 JDK 1.5이전 Vector는 Object를 요소로 받아 들임 3번 행의 다운 캐스팅이 반드시 필요하며 이 부분이 문제를 발생시킨다. 컴파일러는 elementat이 Object 타입을 반환할 것이라는 밖에는 알지 못하므로 프로그래 머가 명시적으로 타입을 지정하여야 한다. 규모가 큰 프로그램의 작성 시 프로그래머가 타입을 실수로 잘못 지정하는 경우에는 런타 임에 ClassCastException이 발생 제네릭을 이용하면 컴파일러가 요소의 타입을 알 수 있어 타입 불일치를 방지 제네릭의 기본 개념 -제네릭 디자인 패턴의 매개 변수화된 타입과 메소드(parameterized type and method)를 의미 JDK 1.5부터 도입 컬렉션은 다양한 타입의 객체들을 하나로 모아서 관리하므로 제네릭으로 정의되어 있음
55 제네릭 Vector를 설명하는 자바 API 그림 제네릭 컬렉션 사용하기 -제네릭 Vector 클래스 벡터는 일반 배열과는 달리 크기가 가변적인 객체의 배열을 구현 배열의 원소는 객체만 허용 기본 데이터 타입은 원소가 될 수 없음 add, remove, indexof, size, Iterator 등 메소드 이용하여 관리 -제네릭 Vector 사용하기 제네릭 Vector의 생성 제네릭 벡터에 요소 삽입 제네릭 벡터에서 요소 얻기 생성할 때 지정한 타입이 아닌 타입은 삽입 불가
56 -예제 8-8 : 제네릭 Vector 사용하기 다음 코드에 대한 결과는 무엇인가? -예제 8-9 : 제네릭 타입을 두 개 가진 제네릭 Hashtable 사용하기 다음 코드에 대한 결과는 무엇인가? 제네릭 클래스와 인터페이스 선언
57 -제네릭 클래스 작성 예 일반화된 타입(generic type) 매개 변수 T를 가진 MyClass 작성된 MyClass 타입 객체 생성 예 타입 매개 변수 -타입 매개 변수 < 과 > 사이의 문자로 표현 하나의 대문자를 타입 매개 변수로 사용 많이 사용하는 타입 매개 변수 문자 E : Element를 의미하며 컬렉션에서 요소를 표시할 때 많이 사용한다. T : Type을 의미한다. V : Value를 의미한다. K : Key를 의미 타입 매개변수가 나타내는 타입의 객체 생성 불가 ex) T a = new T(); 타입 매개 변수는 나중에 실제 타입으로 대체 된다. 어떤 문자도 매개 변수로 사용될 수 있다 제네릭 클래스, 인터페이스 사용 -변수 선언 제네릭 클래스 또는 인터페이스 타입 변수를 선언할 때는 타입 매개 변수에 실제 타입을 기입 -객체 생성 제네릭 클래스 객체를 생성할 때도 타입 매개 변수에 실제 타입을 기입
58 -예제 8-10 : 스택 스택 자료 구조를 제네릭 클래스로 선언하고, String과 Integer형 스택을 사용하는 예를 보여라 제네릭과 배열 -제네릭에서 배열의 제한 -제네릭 클래스 또는 인터페이스의 배열을 허용하지 않음 -타입 매개 변수가 나타내는 타입의 배열을 생성하는 것도 허용되지 않음 앞 예제에서는 Object 타입으로 배열 생성 후 실제 사용할 때 타입 캐스팅 -타입 매개변수가 나타내는 타입의 배열 선언은 허용 제네릭 메소드 -제네릭 메소드 정의 메소드에서도 타입 매개 변수를 이용하여 제네릭 메소드 정의 가능
59 제네릭 메소드를 호출할 때는 컴파일러가 메소드의 인자를 통해 이미 타입을 알고 있으므 로 타입을 명시하지 않아도 됨 sa는 String[], gss는 GStack<String> 타입이므로 T를 String으로 유추 -예제 8-11 : 스택의 내용을 반대로 만드는 제네릭 메소드 만들기 예제 8-10의 GStack을 이용하여 주어진 스택의 내용을 반대로 만드는 제네릭 메소드 reverse()를 작성하라 제네릭의 장점 -컬렉션과 같은 컨테이너 클래스에 유연성을 해치지 않으며 type-awareness를 첨가 -메소드에 type-awareness 첨가 -컴파일 시에 타입이 결정되어 보다 안전한 프로그래밍 가능 -개발 시 다운캐스팅(타입 캐스팅) 절차 불필요 -런타임 타입 충돌 문제 방지 -ClassCastException 방지 제9장 자바의 GUI, AWT와 Swing 9.1 자바의 GUI(Graphic User Interface) 1. GUI 목적 -GUI 목적 그래픽 이용, 사용자에게 이해하기 쉬운 모양으로 정보 제공 사용자는 마우스나 키보드를 이용하여 쉽게 입력 -자바 GUI 특징 강력한 GUI 컴포넌트 제공 쉬운 GUI 프로그래밍
60 -자바의 GUI 프로그래밍 방법 GUI 컴포넌트 이용 AWT 패키지와 Swing 패키지 AWT -java.awt 패키지 Swing -javax.swing 패키지 2. 스윙 컴포넌트 예시 그림 9.1 그림
61 그림 9.3 그림
62 3. Swing 으로 만든 GUI 프로그램 샘플 마우스를 올리면 컴포넌트 타입(예:JButton)을 표시 그림 AWT와 Swing 패키지 -AWT(Abstract Windowing Toolkit) 자바가 처음 나왔을 때 함께 배포된 GUI 라이브러리 GUI 클래스 패키지 - java.awt 패키지 Native 운영체제와 응용프로그램 사이의 연결 라이브러리 중량 컴포넌트(Heavy weight components) -AWT 컴포넌트는 native(peer)에 의존적임 -OS의 도움을 받아야 화면에 출력되며 동작하는 컴포넌트. 운영체제에 많은 부담. 오 히려 처리 속도는 빠름 -Swing(스윙) AWT 기술을 기반으로 작성된 자바 라이브러리 모든 AWT 기능 + 추가된 풍부하고 화려한 고급 컴포넌트 AWT 컴포넌트에 J자가 덧붙여진 이름의 클래스 J 자로 시작하는 클래스 순수한 자바 언어로 구현, JDK 1.1 부터 - javax.swing 패키지 Swing 컴포넌트는 native(peer)에 의존하지 않음 경량 컴포넌트(Light weight components) 5. GUI 라이브러리 계층 구조
63 그림 Swing 클래스의 특징 -클래스명 J 자로 시작 -화려하고 다양한 컴포넌트로 쉽게 GUI 프로그래밍 -스윙 컴포넌트는 2 가지 유형 JComponent는 상속받는 클래스 AWT의 Container를 상속받는 클래스 JApplet, JDialog, JFrame 등 -JComponent 매우 중요한 추상 클래스 스윙 컴포넌트의 공통적인 속성 구현 new JComponent() 인스턴스를 생성할 수 없음 AWT의 Component를 상속받음 7. 컨테이너와 컴포넌트 -컨테이너 다른 컴포넌트를 포함할 수 있는 GUI 컴포넌트 java.awt.container를 상속받아야 함 컨테이너 객체는 다른 컨테이너에 포함될 수 있는 컴포넌트 AWT 컨테이너 -Panel, Frame, Applet, Dialog, Window Swing 컨테이너 -JPanel JFrame, JApplet, JDialog, JWindow
64 -최상위 컨테이너 다른 컨테이너에 속하지 않고도 독립적으로 존재하고 화면에 출력가능한 컨테이너 JFrame, JDialog, JApplet -컴포넌트 컨테이너에 포함되어야 비로소 화면에 출력될 수 있는 GUI 객체 모든 GUI 컴포넌트의 최상위 클래스 java.awt.component 스윙 컴포넌트의 최상위 클래스 javax.swing.jcomponent 8. 컨테이너와 컴포넌트의 포함관계 그림 스윙 GUI 프로그램 만들기 1. 프레임 만들기 2. 프레임에 스윙 컴포넌트 붙이기 3. main() 함수 만들기 -스윙 프로그램을 작성하기 위한 import문 import java.awt.*; // 그래픽 처리를 위한 클래스들의 경로명 import java.awt.event.*; // AWT 이벤트 사용을 위한 경로명 import javax.swing.*; // 스윙 컴포넌트 클래스들의 경로명 import javax.swing.event.*; // 스윙 이벤트를 위한 경로명 10. 스윙 프레임 -모든 스윙 컴포넌트를 담는 최상위 GUI 컨테이너 JFrame -하나의 스윙 응용프로그램에 하나의 프레임 존재 -프레임이 닫히면 프레임 내의 모든 컴포넌트도 사멸
65 화면에서 사라짐 -스윙 프레임(JFrame) 기본 구성 그림 프레임 만들기 그림
66 12. main()의 위치 그림 프레임에 컴포넌트 붙이기 -타이틀 - 프레임 영역의 타이틀 바에 부착 -메뉴 - 메뉴바 공간, 14장에서 다룸 -스윙 컴포넌트 - 컨텐트팬(Content Pane)에 부착 컨텐트팬 알아내기 컨텐트팬에 컴포넌트 달기 컨텐트팬 변경
67 -예제 9-1 : 컴포넌트를 부착한 프레임 예 그림 스윙 응용프로그램의 종료 -프로그램에서 무조건 종료 언제 어디서나 프로그램 종료 -프레임 종료버튼(X) 클릭시 발생하는 현상 프레임을 종료하여 프레임 윈도우가 닫히게 됨. 화면에서 보이지 않게 됨 프로그램이 종료되지는 않음 -프레임 종료버튼 클릭시 프로그램이 종료 되게 하는 방법 프레임이 닫히면 자동으로 자바 프로그램도 함께 종료된다. 15. main() 메소드 종료 뒤에도 프레임이 살아 있는 이유? -main() 메소드를 실행하는 스레드 메인스레드(main 스레드) -스윙 프로그램의 생명 사이클
68 메인 스레드외에 다른 스레드가 생성되어 살아 있으면 메인 스레드가 종료되어도 자바 응 용프로그램은 종료되지 않음 -스윙 응용프로그램이 실행되면 자동으로 이벤트 처리 스레드가 보이지 않게 실행됨 메인 스레드가 종료해도 스윙 응용프로그램이 종료되지 않음 16. 컨테이너와 배치 개념 그림 배치 관리자 대표 유형 4 가지 -java.awt 패키지에 구현되어 있음 그림
69 18. 컨테이너와 배치관리자 -컨테이너의 디폴트 배치관리자 컨테이너는 생성시 디폴트 배치관리자 설정 표 9.1 AWT와 스윙의 컨테이너 디폴트 배치관리자 Window BorderLayout Frame, JFrame BorderLayout Dialog, JDialog BorderLayout Panel, JPanel FlowLayout Applet, JApplet FlowLayout -컨테이너에 새로운 배치관리자 설정 Container.setLayout(LayoutManager lm) lm을 Container의 새로운 배치관리자로 설정 19. FlowLayout -배치방법 컨테이너 공간 내에 왼쪽에서 오른쪽으로 배치 다시 위에서 아래로 순서대로 컴포넌트를 배치한다. 그림
70 -컨테이너의 크기가 변하면 재배치 그림 FlowLayout - 생성자와 속성 -생성자 FlowLayout() FlowLayout(int align) FlowLayout(int align, int hgap, int vgap) align : 컴포넌트의 정렬(5 가지중 많이 사용되는 3 가지) -FlowLayout.LEFT, FlowLayout.RIGHT, FlowLayout.CENTER(디폴트) hgap : 좌우 두 컴포넌트 사이의 수평 간격, 픽셀 단위(디폴트 : 5) vgap : 상하 두 컴포넌트 사이의 수직 간격, 픽셀 단위(디폴트 : 5) 그림
71 -예제 9-2 : LEFT로 정렬되는 수평 간격이 30 픽셀, 수직 간격이 40 픽셀인 FlowLayout 사용 예 그림 BorderLayout -배치방법 컨테이너 공간을 5 구역으로 분할, 배치 East, West, South, North, Center 배치 방법 add(component comp, int index) -comp를 index의 공간에 배치 -index BorderLayout.EAST, BorderLayout.WEST, BorderLayout.SOUTH, BorderLayout.NORTH, BorderLayout.CENTER, 컨테이너의 크기가 변하면 재배치 그림 BorderLayout 생성자와 속성 -생성자 BorderLayout() BorderLayout(int hgap, int vgap) hgap : 좌우 두 컴포넌트 사이의 수평 간격, 픽셀 단위(디폴트 : 0)
72 vgap : 상하 두 컴포넌트 사이의 수직 간격, 픽셀 단위(디폴트 : 0) -BorderLayout의 사용예 그림 예제 9-3 : BorderLayout 사용 예 그림 GridLayout -배치방법
73 컨테이너 공간을 동일한 사각형 격자(그리드)로 분할하고 각 셀에 하나의 컴포넌트 배치 격자 구성은 생성자에서 행수와 열수로 지정 셀에 왼쪽에서 오른쪽으로, 다시 위에서 아래로 순서대로 배치 그림 9.21 컨테이너의 크기가 변하면 재배치 크기 재조정 24. GridLayout 생성자와 속성 -생성자 GridLayout() GridLayout(int rows, int cols) GridLayout(int rows, int cols, int hgap, int vgap) rows : 격자의 행수 (디폴트 : 1) cols : 격자의 열수 (디폴트 : 1) hgap : 좌우 두 컴포넌트 사이의 수평 간격, 픽셀 단위(디폴트 : 0) vgap : 상하 두 컴포넌트 사이의 수직 간격, 픽셀 단위(디폴트 : 0) rows x cols 만큼의 셀을 가진 격자로 컨테이너 공간을 분할, 배치 -예제 9-4 : GridLayout으로 입력 폼 만들기 그림
74 25. 배치관리자 없는 컨테이너 -배치관리자가 없는 컨테이너 개념 응용프로그램에서 컴포넌트의 절대 크기와 절대 위치를 스스로 결정 -용도 컴포넌트의 크기나 위치를 개발자 임의로 결정하고자 하는 경우 게임 프로그램과 같이 시간이나 마우스/키보드의 입력에 따라 컴포넌트들의 위치와 크기 가 수시로 변하는 경우 여러 컴포넌트들이 서로 겹치는 효과를 연출하고자 하는 경우 -컨테이너의 배치 관리자 제거 방법 Container.setLayout(null); -컴포넌트의 크기와 위치 설정 프로그램 내에서 이루어져야 함 컴포넌트들이 서로 겹치는 효과 연출 가능 다음 메소드 이용 컴포넌트 크기 설정 : Component.setSize(int width, int height); 컴포넌트 위치 설정 : Component.setLocation(int x, int y); 컴포넌트 위치와 크기 동시 설정 : Component.setBounds(int x, int y, int width, int height); -예제 9-5 : 배치관리자 없는 컨테이너에 컴포넌트 위치와 크기를 절대적으로 지정 그림
75 제10장 이벤트 처리 10.1 이벤트 기반 프로그래밍 1.이벤트 기반 프로그래밍 -이벤트 기반 프로그래밍(Event Driven Programming) 이벤트의 발생에 의해 프로그램 흐름이 결정되는 방식 이벤트가 발생하면 이벤트를 처리하는 루틴(이벤트 리스너)이 실행하는 방식 프로그램 내의 어떤 코드가 언제 실행될 지 아무도 모름, 이벤트의 발생에 의해 전적으 로 결정 반대되는 개념 : 배치 실행(batch programming) 프로그램의 개발자가 프로그램의 흐름을 결정하는 방식 -이벤트 사용자의 입력 : 마우스 드래그, 마우스 클릭, 키보드 누름 센서로부터의 입력 네트워크로부터 데이타 송수신 다른 응용프로그램이나 다른 스레드로부터의 메시지 -이벤트 기반 프로그램의 구조 프로그램에서 처리하고자 하는 이벤트의 이벤트 처리 리스너 구현 -이벤트 처리 순서 이벤트 발생(예 :마우스나 키보드의 움직임 혹은 입력) 이벤트 객체 생성 현재 발생한 이벤트에 대한 여러 정보를 가진 객체 이벤트 리스너 찾기 이벤트 리스너 호출 event 객체가 리스너에 전달됨 이벤트 리스너 실행 -이벤트의 실제 예 그림
76 자바의 이벤트 기반 GUI 응용프로그램 구성 그림 이벤트 객체 -이벤트 객체란? 이벤트가 발생하면 발생한 이벤트에 관한 정보를 가진 객체 이벤트 리스너에 전달됨 이벤트 리스에서 이벤트가 발생한 여러 상황을 파악할 수 있게 함 -이벤트 객체의 종류 그림
77 이벤트 객체에 포함된 정보 -이벤트 객체가 포함하는 정보 이벤트 종류 이벤트 소스 이벤트가 발생한 화면 좌표 이벤트가 발생한 컴포넌트 내 좌표 버튼이나 메뉴 아이템에 이벤트가 발생한 경우 버튼이나 메뉴 아이템의 문자열 클릭된 마우스 버튼 번호 마우스의 클릭 횟수 키가 눌러졌다면 키의 코드 값과 문자 값 체크박스, 라디오버튼 등과 같은 컴포넌트에 이벤트가 발생하였다면 체크 상태 -이벤트에 따라 조금씩 다른 정보 포함 ActionEvent 객체 : 액션 문자열 MouseEvent 객체 : 마우스의 위치 정보, 마우스 버튼, 함께 눌러진 키 정보 등 ItemEvent 객체 : 아이템의 체크 상태 -이벤트 소스 알아 내기 object EventObject.getSource() 발생한 이벤트의 소스 컴포넌트를 리턴한다. Object 타입으로 리턴하므로 캐스팅하여 사용하는 것을 추천한다. 모든 이벤트 객체에서 제공됨 이벤트 객체의 메소드 그림
78 이벤트 객체와 이벤트 소스 표 10.1 이벤트 객체 이벤트 소스 이벤트가 발생하는 경우 JButton 마우스로 버튼을 클릭하거나 키로 버튼을 선택한 경우 ActionEvent JList JMenuItem 리스트 아이템을 더블클릭하여 리스트 아이템을 선택한 경우 메뉴 아이템 선택을 선택한 경우 JTextField 텍스트 입력 중 <Enter> 키를 누른 경우 JCheckBox 체크박스의 선택 혹은 해제 ItemEvent JCheckBoxMenu 체크박스 메뉴 아이템이 선택 혹은해제 될 때 Item JList 리스트 아이템이 선택될 때 KeyEvent Component 모든 컴포넌트에 대해, 키가 눌러지거나 눌러진 키가 떼어질 때 MouseEvent Component 모든 컴포넌트에 대해, 마우스 버튼이 눌러지거나 떼어질 때, 클 릭될 때, 컴포넌트 위에 마우스가 올라갈 때, 올라간 마우스가 내 려올 때, 마우스가 드래그될 때, 마우스가 단순 움직일 때 FocusEvent Component 모든 컴포넌트에 대해, 컴포넌트가 포커스를 받거나 잃을 때 TextEvent TextField TextArea 텍스트가 변경될 때 텍스트가 변경될 때 WindowEvent Window AdjustmentEven JScrollBar t ComponentEven Component t ContainerEvent Container Window를 상속받는 모든 컴포넌트에 대해, 윈도우가 활성화,비 활성화, 아이콘화, 아이콘에서 복구 될 때, 윈도우가 열리거나 닫 힐 때, 윈도우가 종료될 때 등 스크롤바를 사용자가 움직였을 때 모든 컴포넌트에 대해, 컴포넌트가 사라지거나, 나타나거나, 이동 하거나 크기 변경 될 때 Container에 컴포넌트가 추가 혹은 삭제되었을 때 이벤트 리스너(Event Listener) -이벤트 리스너란? 이벤트를 처리하는 핸들러
79 -이벤트 리스너는 인터페이스(interface)이다. 개발자가 리스너 인터페이스의 모든 추상 메소드 구현 필요 이벤트가 발생하면 이미 약속된 메소드 호출 예) ActionListener 인터페이스 예) MouseListener 인터페이스 이벤트 리스너 등록 -이벤트 리스너 등록 이벤트를 받아 처리하고자 하는 컴포넌트에 이벤트 리스너 등록 -이벤트 리스너 등록시 사용되는 메소드 Component.addXXXListener(listener) xxx : 이벤트 명 listener : 이벤트 리스너 객체 예) addmouselistener(), addactionlistener(), addfocuslistener() 등 이벤트 리스너가 등록된 컴포넌트에만 이벤트 처리 가능 리스너 인터페이스와 메소드 표 10.2 리스너인터페이스 리스너메소드 메소드가호출되는경우 ActionListener actionperformed(actionevent) ActionEvent가발생하는경우 ItemListener itemstatechanged(itemevent) ItemEvent 가발생하는경우 KeyListener MouseListener keypressed(keyevent) keyreleased(keyevent) keytyped(keyevent) mousepressed(mouseevent) mousereleased(mouseevent) mouseclicked(mouseevent) mouseentered(mouseevent) mouseexited(mouseevent) 키가눌러질때 눌러진키가떼어질때 키가입력될때 마우스버튼이눌러질때 눌러진마우스버튼이떼어질때 마우스클릭될때 마우스가임의의컴포넌트위에올라올때 컴포넌트에올라온마우스가컴포넌트를벗어날때 MouseMotionListener mousedragged(mouseevent) 마우스를임의의컴포넌트위에서드래깅할때
80 mousemoved(mouseevent) 마우스를임의의컴포넌트위에서움직일때 FocusListener focusgained(focusevent) 컴포넌트가포커스를받을때 focuslost(focusevent) 컴포넌트가포커스를잃을때 TextListener textvaluechanged(textevent) 텍스트가변경될떄 windowopened(windowevent) 윈도우가생성되어처음으로보이게될때 windowclosing(windowevent) 사용자가윈도우의시스템메뉴에서윈도우닫기 를시도할때 WindowListener windowiconfied(windowevent) 윈도우가보통크기에서아이콘화될때 windowdeiconfied(windowevent) 아이콘상태의윈도우가가보통상태로복귀할때 windowclosed(windowevent) 윈도우닫기절차에의해윈도우가닫혀졌을때 windowactivated(windowevent) 윈도우가활성화윈도우로설정되어활성화될때 windowdeactivated(windowevent) 활성화상태의윈도우가비활성화될때 AdjustmentListener adjustmentvaluechanged(adjustmentevent) 스크롤바를움직였을때 componenthidden(componentevent) 컴포넌트가보이지않는상태로될때 componentshown(componentevent) 컴포넌트가보이는상태로될때 ComponentListener componentresized(componentevent) 컴포넌트의크기가변경될때 compnentmoved(componentevent) 컴포넌트의위치가변경될때 ContainerListener componentadded(containerevent) componentremoved(containerevent) 컴포넌트가컨테이너에추가될때 컴포넌트가컨테이너에서삭제될때 이벤트 리스너작성 예 그림
81 -예제 10-1 : 버튼에 Mouse이벤트를 처리하는 예제 그림 Tip : 리스너 등록 메소드가 addxxxlistener인 이유? -한 컴포넌트는 서로 다른 이벤트에 대한 리스너를 동시에 여러개 가질 수 있다. JButton.addActionListener(); // Action 리스너 JButton.addKeyListener(); // Key 리스너 JButton.addFocusListener(); // Focus 리스너 -한 컴포넌트는 한 이벤트에 대해 여러 개의 리스너를 동시에 가질 수 있다. JButton.addActionListener(new MyButtonListener1()); JButton.addActionListener(new MyButtonListener2()); JButton.addActionListener(new MyButtonListener3()); 이때, 리스너는 등록된 반대 순으로 모두 실행된다 이벤트 리스너 작성 방법 -3 가지 방법 독립 클래스로 작성 이벤트 리스너를 완전한 클래스로 작성 내부 클래스(inner class)로 작성 익명 클래스(anonymous class)로 작성
82 독립 클래스로 리스너 작성 그림 내부 클래스로 리스너 작성 그림
83 익명 클래스로 이벤트 리스너 작성 -익명 클래스란? (클래스 정의 + 인스턴스 생성)을 한번에 작성 ActionListener를 구현하는 익명의 이벤트 리스너 작성 예 -예제 10-2 : 마우스로 문자열 이동시키기 마우스 버튼을 누르면 마우스가 있는 위치로 hello 문자열을 이동시킨다. 이벤트와 리스너 : MouseEvent와 MouseListener 이벤트 소스 : JPanel 구현할 리스너의 메소드 : mousepressed() 하나
84 hello 문자열 표현 : JLabel 컨텐트 팬 : JPanel로 교체, 배치관리자 null로 설정 그림 예제 10-2의 소스 어댑터(Adapter) 클래스 -이벤트 리스너 구현에 따른 부담 리스너의 추상 메소드들을 모두 구현하여야 하는 부담 마우스 리스너에서 마우스가 눌러지는 경우(mousePressed())만 다루고자 하는 경우에 도 나머지 4 개의 메소드도 모두 구현하여야 함. -어댑터 클래스 JDK에서 제공 이벤트 리스너를 간단히 구현해 놓은 클래스
85 리스너의 모든 메소드가 단순 리턴하도록 구현됨 MouseAdapter 예 메소드를 하나만 가진 리스너는 해당 어댑터가 존재하지 않음 ActionAdapter, ItemAdapter 등은 존재하지 않음 리스너와 어댑터 클래스 표 10.3 리스너 인터페이스 ActionListener ItemListener KeyListener MouseListener MouseMotionListener FocusListener TextListener WindowListener AdjustmentListener ComponentListener ContainerListener 어댑터 클래스 없음 없음 KeyAdapter MouseAdapter MouseMotionAdapter FocusAdapter 없음 WindowAdapter 없음 ComponentAdapter ContainerAdapter 어댑터 사용 예
86 -예제 10-3: MouseAdapter 사용하기 Key 이벤트와 포커스 -키 이벤트는 키를 입력하는 다음 3 경우에 발생 키를 누르는 순간 누른 키를 떼는 순간 누른 키를 떼는 순간 + Unicode 키가 입력된 경우 -키 이벤트를 받을 수 있는 조건 키가 발생한 컴포넌트가 포커스를 가지고 있어야 함 -포커스 키 이벤트를 독점하는 권한 컴포넌트에 포커스 설정 방법 component.requestfocus(); // component가 키 이벤트를 받을 수 있게 함 -모든 컴포넌트에 대해 사용자는 키 입력 가능 키 이벤트는 모든 컴포넌트에 기본적으로 발생 가능 KeyListener의 메소드와 키 -KeyListener의 3 개의 메소드 그림
87 -컴포넌트에 키 이벤트 리스너 등록 유니코드(Unicode) -유니코드 키의 특징 국제 산업 표준 전 세계의 문자를 컴퓨터에서 일관되게 표현하기 위한 코드 체계 문자들에 대해서만 코드 값이 정의됨 A~Z, a~z, & 등 문자 키가 아닌 경우에는 통일된 키 코드 값이 없음 <Function> 키, <Home> 키, <Up> 키,<Delete> 키, <Control> 키, <Shift> 키, <Alt> 등 유니코드 키가 입력되는 경우 keypressed(), keyreleased() 만 호출됨 유니코드 키가 아닌 경우 keypressed(), keytyped(), keyreleased() 가 모두 호출됨 입력된 키 판별 -KeyEvent 객체 입력된 키 값을 가진 이벤트 객체 -KeyEvent의 메소드로 입력된 키 판별 Unicode 키의 문자 값을 판별, char KeyEvent.getKeyChar() 눌러진 키에 해당하는 문자 값 리턴 눌러진 키가 Unicode 문자 키인 경우에만 의미 있음 Unicode 문자 외 모든 키 판별, int KeyEvent.getKeyCode() 눌러진 키에 대한 정수형 키 코드 값 리턴 Unicode 문자에 관계 없이, function 키, modifier 키, Control 키, Action 키 등 모든 키에 대해 키 코드 값 리턴 운영체제나 하드웨어에 따라 키 셋은 서로 다름 입력된 키를 판별하기 위해 가상키(Virtual Key) 값과 비교하여야 함 -가상 키 값은 KeyEvent 클래스의 상수로 정의됨 -키 이름 문자열 리턴 String KeyEvent.getKeyText(int keycode) static keycode에 해당하는 키의 이름을 문자열을 리턴 -F1 키의 경우 "F1", Shift 키의 경우 "SHIFT" 등의 문자열 리턴 가상 키(Virtual Key) -가상 키는 KeyEvent 클래스에 상수로 정의되어 있음 -가상 키의 일부분 표 10.4 가상 키 설명 가상 키 설명 VK_0 ~ VK_9 0에서 9까지의 숫자키 0 ~ 9 까지의 ASCII 값과 VK_LEFT 왼쪽 방향 키
88 동일 VK_A ~ VK_Z A에서 Z까지의 문자키, A ~ VK_RIGHT 오른쪽 방향 키 Z 까지의 ASCII 값과 동일 <Function> 키 F1 ~ F24까 VK_F1~ VK_F24 지의 키 코드 VK_UP <Up>키 VK_HOME <Home>키 VK_DOWN <Down> 키 VK_END <End>키 VK_CONTROL <Control> 키 VK_PGUP <Page Up> 키 VK_SHIFT <Shift> 키 VK_PGDN <Page Down >키 VK_ALT <Alt> 키 입력된 키의 코드 값이 알 수 VK_UNDEFINED VK_TAB <Tab> 키 없음 KeyListener의 메소드와 키 그림 KeyEvent와 KeyListener의 활용 : getkeycode(), getkeychar(), getkeytext() 사용
89 실행 결과 그림
90 -예제 10-4 : F1 키를 입력받으면 바탕을 초록색으로, % 키를 입력받으면 바탕을 노란색으로 변경 -예제 10-4 실행 그림
91 -예제 10-5 : 상,하,좌,우 키로 HELLO 문자열 움직이기 -예제 실행: 상,하,좌,우 키로 텍스트 움직이기 그림
92 MouseEvent와 MouseListener,MouseMotionListener -Mouse 이벤트 사용자의 마우스 조작에 따라 발생하는 이벤트 표 10.5 Mouse 이벤트가 발생하는 리스너의메소드 경우 마우스가 컴포넌트 위에 void mouseentered(mouseevent e) 올라갈 때 마우스가 컴포넌트에서 voidmouseexited(mouseevent e) 내려올 때 리스너 MouseListener MouseListener 마우스 버튼이 눌러졌을 때 void mousepressed(mouseevent e) MouseListener 눌러진 버튼이 떼어질 때 void mousereleased(mouseevent e) MouseListener 마우스가 컴포넌트를 클릭하였을 때 void mouseclicked(mouseevent e) MouseListener 마우스가 드래그되는 동안 void mousedragged(mouseevent e) MouseMotionListener 마우스가 움직이는 동안 void mousemoved(mouseevent e) MouseMotionListener 마우스가 클릭되어 한 번 드래그될 때 메소드 호출 순서 MouseEvent 로부터 얻을 수 있는 정보 -마우스 포인터의 위치 int getx(), int gety(), Point getpoint() -입력된 마우스 버튼 short getbutton() -마우스 클릭 횟수 int getclickcount() -팝업 메뉴 클릭 boolean ispopuptrigger() MouseListener와 MouseMotionListener 사용 예
93 -실행: MouseListener와 MouseMotionListener 사용 그림
94 -예제 10-6 : 더블클릭시 컨텐트의 배경색 변경 그림 제11장 스윙 컴포넌트와 이벤트 핸들링 11.1 기초적인 스윙 컴포넌트와 상속 관계 1.기초적인 스윙 컴포넌트와 상속 관계 그림
95 2. 스윙컴포넌트의 공통 메소드. JComponent의메소드 3. 스윙 컴포넌트의 공통 메소드 확인 사례
96 4. 실행: 스윙 컴포넌트의 공통 요소 그림 JLabel, 레이블 컴포넌트 -JLabel의 용도 텍스트나 이미지를 컴포넌트화 하기 위한 목적 -레이블 컴포넌트 생성 JLabel() 텍스트나 이미지 정보가 없는 빈 레이블 컴포넌트 생성 JLabel(Icon image) 이미지만을 가진 레이블 컴포넌트 생성 JLabel(String text) 텍스트만을 가진 레이블 컴포넌트 생성 JLabel(String text, Icon image, int halignment) 텍스트와 이미지, 수평 정렬 값을 가진 레이블 컴포넌트 생성 수평정렬 값인 halignment로 사용가능한 값들. -SwingConstants.LEFT, CENTER, RIGHT, LEADING or TRAILING 6. 레이블 컴포넌트 생성 예 -단순 텍스트 만을 가진 레이블 컴포넌트 생성 -이미지를 가진 레이블 컴포넌트 생성 이미지 파일로부터 이미지 생성을 위해 ImageIcon 클래스 사용
97 출력 가능한 이미지 종류 png, gif, jpg sunset.jpg의 경로명이 "images/sunset.jpg"인 경우 -수평정렬 값을 가진 레이블 컴포넌트 생성 수평정렬 값으로 사용되는 값을 생성자의 3 번째 인자로 지정 텍스트 이미지 모두 출력하고자 하는 경우 수평정렬 값을 지정하여야 함. -예제 11-1 : JLabel 컴포넌트 생성 예 그림 JButton, 버튼 컴포넌트 -버튼 컴포넌트 버튼 모양의 컴포넌트 버튼은 클릭될 때 Action 이벤트를 발생시킴 -버튼 컴포넌트 생성 JButton() 텍스트나 이미지 아이콘를 가지지 않은 디폴트 버튼 생성 JButton(Icon icon) 이미지 아이콘만을 가진 버튼 생성 JButton(String text) 텍스트만을 가진 버튼 생성 JButton(String text, Icon icon) 텍스트와 이미지 아이콘을 모두 가진 버튼 생성 -버튼 컴포넌트 생성 예
98 hello 문자열을 가진 버튼 컴포넌트 생성 예 그림 이미지를 가진 버튼 컴포넌트 만들기 -하나의 버튼에 3 개의 이미지 연결 사용자의 마우스 접근에 따라 3 개의 이미지 중 선택 출력 -3 개의 버튼 이미지 버튼의 보통 상태 때 출력되는 이미지 : normalicon 생성자 호출 시에 주어진 이미지 아이콘 버튼 위에 마우스가 올라갈 때 출력되는 이미지 : rollovericon 이미지 설정 메소드 : JButton.setRolloverIcon(Icon); 마우스 버튼을 누른 상태 때 출력되는 이미지 : pressedicon 이미지 설정 메소드 : JButton.setPressedIcon(Icon) -이미지 아이콘 생성 new ImageIcon(이미지 경로명); new ImageIcon("images/normalIcon.gif); -예제 11-2 : 3 개의 이미지 아이콘을 가진 버튼 만들기 그림
99 9. 레이블과 버튼의 정렬(Alignment) -수평 정렬 컴포넌트 영역 내에 이미지와 텍스트의 수평상의 위치 결정 void sethorizontalalignment(int align) -수직 정렬 컴포넌트 영역 내에 콘텐츠(이미지와 텍스트)의 수직상의 위치 void setverticalalignment(int align) 그림 JCheckBox, 체크박스 컴포넌트 -체크박스 선택(selected)과 비선택(deselected)의 두 상태만을 가지는 버튼 그림 생성자 디폴트는 선택되지 않은 상태 JCheckBox () 텍스트와 이미지가 없는 토글 버튼 생성 JCheckBox(Icon icon) 이미지만 가진 토글 버튼 생성 JCheckBox(Icon icon, boolean selected) 이미지와 지정된 선택 상태로 생성 JCheckBox(String text) 텍스트 만을 가진 토글 버튼 생성 JCheckBox(String text, boolean selected)
100 텍스트와 지정된 선택 상태로 생성 JCheckBox(String text, Icon icon) 텍스트와 이미지 둘 다 가진 토글 버튼 생성 JCheckBox(String text, Icon icon, boolean selected) 텍스트와 이미지를 가지고 지정된 선택상태로 생성 11. 체크 박스 생성 -텍스트 정보만을 가진 체크 박스 생성 "사과" 텍스트를 가진 체크박스 생성 "배" 텍스트를 가지고 선택상태로 체크박스 생성 체크 박스 모양이 명료하게 출력되고 사용자는 이것을 체크 -이미지 아이콘을 가진 체크 박스 생성 예 체크 박스 모양이 출력되지 않음 따로 선택상태를 표현하는 이미지 아이콘을 설정하여야 함 cherry.jpg 이미지와 "체리" 텍스트를 가진 체크 박스 생성 예 선택 상태의 이미지를 위해 selectedcherry.jpg를 사용하였음 -예제 11-3 : 체크박스 생성 예 그림
10장.key
JAVA Programming 1 2 (Event Driven Programming)! :,,,! ( )! : (batch programming)!! ( : )!!!! 3 (Mouse Event, Action Event) (Mouse Event, Action Event) (Mouse Event, Container Event) (Key Event) (Key Event,
More informationMicrosoft PowerPoint - 06-Chapter09-Event.ppt
AWT 이벤트처리하기 1. 이벤트처리방식 2. 이벤트클래스와리스너 3. 이벤트어댑터 4. 이벤트의종류 이벤트 (Event) 이벤트 사용자가 UI 컴포넌트에대해취하는행위로인한사건이벤트기반프로그래밍 무한루프를돌면서사용자의행위로인한이벤트를청취하여응답하는형태로작동하는프로그래밍 java.awt.event 이벤트처리 AWT 컴포넌트에서발생하는다양한이벤트를처리하기위한인터페이스와클래스제공
More information오버라이딩 (Overriding)
WindowEvent WindowEvent 윈도우가열리거나 (opened) 닫힐때 (closed) 활성화되거나 (activated) 비활성화될때 (deactivated) 최소화되거나 (iconified) 복귀될때 (deiconified) 윈도우닫힘버튼을누를때 (closing) WindowEvent 수신자 abstract class WindowListener
More information9장.key
JAVA Programming 1 GUI(Graphical User Interface) 2 GUI!,! GUI! GUI, GUI GUI! GUI AWT Swing AWT - java.awt Swing - javax.swing AWT Swing 3 AWT(Abstract Windowing Toolkit)! GUI! java.awt! AWT (Heavy weight
More information<4D F736F F F696E74202D20C1A63138C0E520C0CCBAA5C6AE20C3B3B8AE28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 18 장이벤트처리 이번장에서학습할내용 이벤트처리의개요 이벤트 액션이벤트 Key, Mouse, MouseMotion 어댑터클래스 버튼을누르면반응하도록만들어봅시다. 이번장의목표 버튼을누르면버튼의텍스트가변경되게한다. 이벤트처리과정 이벤트처리과정 (1) 이벤트를발생하는컴포넌트를생성하여야한다. 이벤트처리과정 (2) 이벤트리스너클래스를작성한다.
More informationMicrosoft PowerPoint - 10장
1 이벤트기반프로그래밍 2 제 10 장이벤트처리 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식 이벤트가발생하면이벤트를처리하는루틴 ( 이벤트리스너 ) 이실행하는방식 프로그램내의어떤코드가언제실행될지아무도모름, 이벤트의발생에의해전적으로결정 반대되는개념 : 배치실행 (batch programming) 프로그램의개발자가프로그램의흐름을결정하는방식이벤트
More information슬라이드 1
이벤트 () 란? - 사용자가입력장치 ( 키보드, 마우스등 ) 등을이용해서발생하는사건 - 이벤트를처리하는프로그램은이벤트가발생할때까지무한루프를돌면서대기상태에있는다. 이벤트가발생하면발생한이벤트의종류에따라특정한작업을수행한다. - 이벤트관련프로그램작성을위해 java.awt.event.* 패키지가필요 - 버튼을누른경우, 1 버튼클릭이벤트발생 2 발생한이벤트인식 ( 이벤트리스너가수행
More informationgnu-lee-oop-kor-lec10-1-chap10
어서와 Java 는처음이지! 제 10 장이벤트처리 이벤트분류 액션이벤트 키이벤트 마우스이동이벤트 어댑터클래스 스윙컴포넌트에의하여지원되는이벤트는크게두가지의카테고리로나누어진다. 사용자가버튼을클릭하는경우 사용자가메뉴항목을선택하는경우 사용자가텍스트필드에서엔터키를누르는경우 두개의버튼을만들어서패널의배경색을변경하는프로그램을작성하여보자. 이벤트리스너는하나만생성한다. class
More informationPowerPoint Presentation
Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More informationJAVA PROGRAMMING 실습 08.다형성
2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스
More information11장.key
JAVA Programming 1 GUI 2 2 1. GUI! GUI! GUI.! GUI! GUI 2. GUI!,,,!! GUI! GUI 11 : GUI 12 : GUI 3 4, JComponent 11-1 :, JComponent 5 import java.awt.*; import java.awt.event.*; import javax.swing.*; public
More informationPowerPoint Presentation
Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationPowerPoint 프레젠테이션
자바의이벤트처리 배효철 th1g@nate.com 1 목차 이벤트기반프로그래밍 자바의이벤트기반 GUI 응용프로그램구성 이벤트객체 이벤트리스너 어댑터클래스 Key Event Mouse Event 2 이벤트기반프로그래밍 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식 이벤트가발생하면이벤트를처리하는루틴 (
More information07 자바의 다양한 클래스.key
[ 07 ] . java.lang Object, Math, String, StringBuffer Byte, Short, Integer, Long, Float, Double, Boolean, Character. java.util Random, StringTokenizer Calendar, GregorianCalendar, Date. Collection, List,
More information<4D F736F F F696E74202D205B4A415641C7C1B7CEB1D7B7A1B9D65D3130C0E5C0CCBAA5C6AEC3B3B8AE>
명품 JAVA Programming 1 제 10 장자바의이벤트처리 GUI 응용프로그램 => 이벤트기반프로그래밍 2 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식 이벤트가발생하면이벤트를처리하는루틴 ( 이벤트리스너 ) 실행 프로그램내의어떤코드가언제실행될지아무도모름, 이벤트의발생에의해전적으로결정 반대되는개념
More information<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 19 장배치관리자 이번장에서학습할내용 배치관리자의개요 배치관리자의사용 FlowLayout BorderLayout GridLayout BoxLayout CardLayout 절대위치로배치 컨테이너안에서컴포넌트를배치하는방법에대하여살펴봅시다. 배치관리자 (layout manager) 컨테이너안의각컴포넌트의위치와크기를결정하는작업 [3/70] 상당히다르게보인다.
More informationCluster management software
자바프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교정보통신공학부 최민 이벤트처리 지금까지 GUI 를구성하는 Component 의종류와이 Component 들을 Container 위에적절하게배치하기위한 LayoutManager 를학습하였음 앞에서만들었던 GUI 프로그램은모양만그럴듯할뿐, 실제 Button 을누르거나, Frame 우측상단의 X 표시를클릭해도아무런동작을하지않음이벤트처리가포함되어있지않기때문
More informationMicrosoft PowerPoint - ÀÚ¹Ù08Àå-1.ppt
AWT 컴포넌트 (1) 1. AWT 패키지 2. AWT 프로그램과이벤트 3. Component 클래스 4. 컴포넌트색칠하기 AWT GUI 를만들기위한 API 윈도우프로그래밍을위한클래스와도구를포함 Graphical User Interface 그래픽요소를통해프로그램과대화하는방식 그래픽요소를 GUI 컴포넌트라함 윈도우프로그램만들기 간단한 AWT 프로그램 import
More information<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법
More informationPowerPoint 프레젠테이션
Graphical User Interface 배효철 th1g@nate.com 1 목차 자바의 GUI AWT와 Swing 패키지 Swing 클래스의특징 컨테이너와컴포넌트 Swing GUI 만들기 컨테이너와배치 2 자바의 GUI GUI 목적 그래픽이용, 사용자에게이해하기쉬운모양으로정보제공 사용자는마우스나키보드를이용하여쉽게입력 자바 GUI 특징 강력한 GUI 컴포넌트제공
More information(Microsoft PowerPoint - LZVNQBAJWGTC.ppt [\310\243\310\257 \270\360\265\345])
GUI 인터페이스의이벤트 학습목표 윈도우환경에서작성된 GUI 인터페이스의이벤트개념을이해한다. 다양한컴포넌트에대한이벤트를처리한다 이벤트란? 자바이벤트란 사용자가키보드, 마우스등의장치로부터 AWT 컴포넌트에발생시키는모든사건을의미 이벤트주도형프로그램은사용자로부터발생된이벤트를처리하여사용자와상호작용을가능하게함 자바이벤트모델 컴퓨터 키보드 운영체제 마우스 이벤트객체자바가상머신이벤트소스객체이벤트리스너객체애플리케이션
More information운동시뮬레이션 강의 소개
Event 발생과처리 Event 생성자 Event 처리자 Event listeners Keyboard, Mouse, Button, Menu, Panel, Motion2DGraph Vector y Vector y Vector x Vector y MotionGUI Window Frame Menu
More information자바GUI실전프로그래밍2_장대원.PDF
JAVA GUI - 2 JSTORM http://wwwjstormpekr JAVA GUI - 2 Issued by: < > Document Information Document title: JAVA GUI - 2 Document file name: Revision number: Issued by: Issue Date:
More informationMicrosoft PowerPoint - EEL2 Lecture10 -Swing and Event Handling.pptx
전자공학실험 2 1 WEEK10: SWING AND EVENT HANDLING Fall, 2014 건국대전자공학부 Notice: 주별강의 / 실습 /HW 내용 2 Week Date 강의주제 Homework 실습과제 Handouts 1 09월 03일 Orientation Lab1 Lecture0 2 09월 10일 추석 3 09월 17일 Using Objects
More informationMicrosoft PowerPoint - lec09_12.ppt [호환 모드]
JAVA 프로그래밍 9. 이벤트처리 한동일 학습목표 To understand the Java event model To learn about the relations between components and events To install action and mouse event listeners To accept input from buttons, text
More informationPowerPoint Presentation
객체지향프로그래밍 그래픽사용자인터페이스 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 프레임생성 (1) import javax.swing.*; public class FrameTest { public static void main(string[] args) { JFrame f = new JFrame("Frame Test"); JFrame
More informationpublic class FlowLayoutPractice extends JFrame { public FlowLayoutPractice() { super("flowlayout Practice"); this. Container contentpane = getcontentp
8 장 1 번 public class MyFrame extends JFrame { public MyFrame(String title) { super(title); this. setsize(400,200); new MyFrame("Let's study Java"); 2번 public class MyBorderLayoutFrame extends JFrame {
More informationMicrosoft PowerPoint - 14주차 강의자료
Java 로만드는 Monster 잡기게임예제이해 2014. 12. 2 게임화면및게임방법 기사초기위치 : (0,0) 아이템 10 개랜덤생성 몬스터 10 놈랜덤생성 Frame 하단에기사위치와기사파워출력방향키로기사이동아이템과몬스터는고정종료버튼클릭하면종료 Project 구성 GameMain.java GUI 환경설정, Main Method 게임객체램덤위치에생성 Event
More informationJAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각
JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.
More informationPowerPoint Presentation
객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean
More informationMicrosoft PowerPoint - [JAVA프로그래밍]9장GUI
명품 JAVA Programming 1 제 9 장자바 GUI 기초, AWT 와스윙 (SWING) 자바의 GUI(Graphical User Interface) 2 GUI 목적 그래픽이용, 사용자에게이해하기쉬운모양으로정보제공 사용자는마우스나키보드를이용하여쉽게입력 자바 GUI 특징 강력한 GUI 컴포넌트제공 쉬운 GUI 프로그래밍 자바의 GUI 프로그래밍방법 GUI
More informationiii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.
Eclipse 개발환경에서 WindowBuilder 를이용한 Java 프로그램개발 이예는 Java 프로그램의기초를이해하고있는사람을대상으로 Embedded Microcomputer 를이용한제어시스템을 PC 에서 Serial 통신으로제어 (Graphical User Interface (GUI) 환경에서 ) 하는프로그램개발예를설명한다. WindowBuilder:
More informationMicrosoft PowerPoint - 04-UDP Programming.ppt
Chapter 4. UDP Dongwon Jeong djeong@kunsan.ac.kr http://ist.kunsan.ac.kr/ Dept. of Informatics & Statistics 목차 UDP 1 1 UDP 개념 자바 UDP 프로그램작성 클라이언트와서버모두 DatagramSocket 클래스로생성 상호간통신은 DatagramPacket 클래스를이용하여
More information제8장 자바 GUI 프로그래밍 II
제8장 MVC Model 8.1 MVC 모델 (1/7) MVC (Model, View, Controller) 모델 스윙은 MVC 모델에기초를두고있다. MVC란 Xerox의연구소에서 Smalltalk 언어를바탕으로사용자인터페이스를개발하기위한방법 MVC는 3개의구성요소로구성 Model : 응용프로그램의자료를표현하기위한모델 View : 자료를시각적으로 (GUI 방식으로
More informationPowerPoint Template
JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 20 장패키지 이번장에서학습할내용 패키지의개념 패키지로묶는방법 패키지사용 기본패키지 유틸리티패키지 패키지는연관된클래스들을묶는기법입니다. 패키지란? 패키지 (package) : 클래스들을묶은것 자바라이브러리도패키지로구성 ( 예 ) java.net 패키지 네트워크관련라이브러리 그림 20-1. 패키지의개념 예제 패키지생성하기 Q: 만약패키지문을사용하지않은경우에는어떻게되는가?
More information슬라이드 1
컬렉션프레임워크 (Collection Framework) 의정의 - 다수의데이터를쉽게처리할수있는표준화된방법을제공하는클래스들 - 데이터의집합을다루고표현하기위한단일화된구조 (architecture) - JDK 1.2 이전까지는 Vector, Hashtable, Properties와같은컬렉션클래스로서로다른각자의방식으로처리 - 컬렉션프레임워크는다수의데이터를다루는데필요한다양하고풍부한클래스들을제공하므로프로그래머의부담을상당부분덜어준다.
More informationPowerPoint 프레젠테이션
명품 JAVA Essential 1 2 학습목표 1. 자바의이벤트기반 GUI 프로그램구조이해 2. 이벤트와이벤트객체 3. 이벤트리스너작성 4. 어댑터클래스로리스너작성 5. Key 이벤트로키입력받기 6. Mouse 이벤트로마우스동작인식 이벤트기반프로그래밍 3 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식
More informationNo Slide Title
사건처리와 GUI 프로그래밍 이충기 명지대학교컴퓨터공학과 사건 사건은우리가관심을가질지모르는어떤일이일어나는것을나타내는객체이다. 예를들면, 다음이일어날때프로그램이어떤일을수행해야하는경우에사건이발생한다 : 1. 마우스를클릭한다. 2. 단추를누른다. 3. 키보드의키를누른다. 4. 메뉴항목을선택한다. 2 사건 사건은컴포넌트에서사용자나시스템에의하여발생하는일이다. 자바는사건을나타내는많은사건클래스를제공한다.
More informationPowerPoint 프레젠테이션
실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3
More information제11장 프로세스와 쓰레드
제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드
More information02 C h a p t e r Java
02 C h a p t e r Java Bioinformatics in J a va,, 2 1,,,, C++, Python, (Java),,, (http://wwwbiojavaorg),, 13, 3D GUI,,, (Java programming language) (Sun Microsystems) 1995 1990 (green project) TV 22 CHAPTER
More informationPowerPoint 프레젠테이션
명품 JAVA Essential 1 2 학습목표 1. 자바의이벤트기반 GUI 프로그램구조이해 2. 이벤트와이벤트객체 3. 이벤트리스너작성 4. 어댑터클래스로리스너작성 5. Key 이벤트로키입력받기 6. Mouse 이벤트로마우스동작인식 이벤트기반프로그래밍 3 이벤트기반프로그래밍 (Event Driven Programming) 이벤트의발생에의해프로그램흐름이결정되는방식
More informationMicrosoft PowerPoint - java1-lecture10.ppt [호환 모드]
그래픽사용자인터페이스 그래픽사용자인터페이스이벤트객체, 리스너 그래픽사용자인터페이스 (Graphical User Interface, 간단히 GUI) 는컴포넌트들로구성된다. 514760-1 2018 년봄학기 5/15/2018 박경신 자바에서 GUI 의종류 AWT(Abatract Windows Toolkit) 운영체제가제공하는자원을이용하여서컴포넌트를생성한다. SWING
More informationMicrosoft PowerPoint - lec7_package [호환 모드]
Lecture 7: Package 패키지의선언 패키지의사용 JAR 파일 자바의언어패키지 2 연관된클래스나인터페이스를하나의단위로묶는방법 장점 여러개의클래스와인터페이스를하나의그룹으로다루는수단을제공 클래스이름사이의충돌문제를해결 패키지의종류 기본패키지 : java.lang, java.util, java.io, java.awt 사용자정의패키지 3 선언형태 package
More informationMicrosoft PowerPoint - java2-lecture5.ppt [호환 모드]
자바에서 GUI 의종류 자바 GUI & 이벤트처리 514770-1 2017 년봄학기 4/19/2017 박경신 AWT(Abstract Windows Toolkit) 운영체제가제공하는자원을이용하여서컴포넌트를생성한다. SWING 스윙컴포넌트가자바로작성되어있기때문에어떤플랫폼에서도일관된화면을보여줄수있다. AWT AWT(Abstract Windows Toolkit) 자바가처음나왔을때함께배포된
More informationPowerPoint Presentation
객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television
More information<4D F736F F F696E74202D20C1A63233C0E520B1D7B7A1C7C820C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 23 장그래픽프로그래밍 이번장에서학습할내용 자바에서의그래픽 기초사항 기초도형그리기 색상 폰트 Java 2D Java 2D를이용한그리기 Java 2D 를이용한채우기 도형회전과평행이동 자바를이용하여서화면에그림을그려봅시다. 자바그래픽데모 자바그래픽의두가지방법 자바그래픽 AWT Java 2D AWT를사용하면기본적인도형들을쉽게그릴수있다. 어디서나잘실행된다.
More information<4D F736F F F696E74202D20C1A63230C0E520BDBAC0AE20C4C4C6F7B3CDC6AE203128B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 20 장스윙컴포넌트 1 이번장에서학습할내용 텍스트컴포넌트 텍스트필드 텍스트영역 스크롤페인 체크박스 라디오버튼 스윙에서제공하는기초적인컴포넌트들을살펴봅시다. 스윙텍스트컴포넌트들 종류텍스트컴포넌트그림 텍스트필드 JTextField JPasswordField JFormattedTextField 일반텍스트영역 JTextArea 스타일텍스트영역
More informationPowerPoint Presentation
Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음
More informationC# Programming Guide - Types
C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More informationPowerPoint Presentation
Package Class 2 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section
More informationPowerPoint Presentation
자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,
More informationMicrosoft PowerPoint - Lect07.pptx
이강의록은 Power Java 저자의강의록을사용했거나재편집된것입니다. Package 개념 Package 묶는방법사용하기기본 Package Utility Package Generic Class Generic Method Collection ArrayList LinkedList Set Queue Map Collection Class 3 패키지 (package)
More informationPowerPoint Presentation
Computer Programming Java AWT Lab 18 엄현상 (Eom, Hyeonsang) School of Computer Science and Engineering Seoul National University Copyrights 2015 DCSLab. All Rights Reserved Overview AWT 일반 AWT 다루기기본 AWT
More information강의자료
Copyright, 2014 MMLab, Dept. of ECE, UOS Java Swing 2014 년 3 월 최성종서울시립대학교전자전기컴퓨터공학부 chois@uos.ac.kr http://www.mmlab.net 차례 2014년 3월 Java Swing 2 2017-06-02 Seong Jong Choi Java Basic Concepts-3 Graphical
More informationMicrosoft PowerPoint 자바-기본문법(Ch2).pptx
자바기본문법 1. 기본사항 2. 자료형 3. 변수와상수 4. 연산자 1 주석 (Comments) 이해를돕기위한설명문 종류 // /* */ /** */ 활용예 javadoc HelloApplication.java 2 주석 (Comments) /* File name: HelloApplication.java Created by: Jung Created on: March
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationMicrosoft PowerPoint - Introduction to Google Guava.pptx
2012 년자바카페 OPEN 세미나 주제 : Introduction to Google Guava 2012. 6. 16 김흥래 hrkim3468@gmail.com Java Developer s Forum JavaCafe community 구아바???? Java Developer s Forum JavaCafe Community 소개 Google Core Library
More informationPowerPoint 프레젠테이션
명품 JAVA Essential 1 2 학습목표 1. 이벤트기반 GUI 프로그래밍이해 2. 자바 GUI 패키지이해 3. 스윙으로 GUI 프로그램작성 4. 컨테이너와컴포넌트, 배치 5. FlowLayout 배치관리자활용 6. BorderLayout 배치관리자활용 7. GridLayout 배치관리자활용 8. 배치관리자없는컨테이너만들기 자바의 GUI(Graphical
More informationJava Programing Environment
Lab Exercise #7 Swing Component 프로그래밍 2007 봄학기 고급프로그래밍 김영국충남대전기정보통신공학부 실습내용 실습과제 7-1 : 정규표현식을이용한사용자정보의유효성검사 (ATM 에서사용자등록용도로사용가능 ) 실습과제 7-2 : 숫자맞추기게임 실습과제 7-3 : 은행관리프로그램 고급프로그래밍 Swing Component 프로그래밍 2
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More informationMicrosoft PowerPoint - chap04-연산자.pptx
int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에
More informationNetwork Programming
Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More informationMicrosoft Word - PJ_scjp_9_0_1-lang.doc
SCJP 강좌 Section 9 java.lang package 문서정보 문서제목 scjp 강좌 : Section 9 java.lang package 파일이름 PJ_scjp_9_0_1.pdf 작성자 신상훈, 김병필 작성일 2002년 1월 10일 버전 0.1 상태 초안 내용정보 예상독자개요 페이지 scjp 취득을원하는 java 초보 java.lang 패키지의
More informationPowerPoint Presentation
객체지향프로그래밍 이벤트처리 손시운 ssw5176@kangwon.ac.kr 이벤트 - 구동프로그래밍 이벤트 - 구동프로그래밍 (event-driven programming): 프로그램의실행이이벤트의발생에의하여결정되는방식 2 이벤트처리과정 3 이벤트리스너 발생된이벤트객체에반응하여서이벤트를처리하는객체를이벤트리스너 (event listener) 라고한다. 4 이벤트처리과정
More informationMicrosoft PowerPoint - C++ 5 .pptx
C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성
More informationVisual Basic 반복문
학습목표 반복문 For Next문, For Each Next문 Do Loop문, While End While문 구구단작성기로익히는반복문 2 5.1 반복문 5.2 구구단작성기로익히는반복문 3 반복문 주어진조건이만족하는동안또는주어진조건이만족할때까지일정구간의실행문을반복하기위해사용 For Next For Each Next Do Loop While Wend 4 For
More informationMicrosoft PowerPoint - ÀÚ¹Ù08Àå-2.ppt
AWT 컴포넌트 (2) 1. 메뉴 2. 컨테이너와컨트롤 3. 배치관리자 메뉴관련클래스계층구조 Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem PopupMenu 메뉴 풀다운메뉴 제목표시줄밑의메뉴바를가짐 메뉴만들기과정 MenuBar 객체생성 MenuBar 에추가할 Menu 객체를생성 Menu 에추가할또다른서브
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성
More informationMicrosoft PowerPoint - 2강
컴퓨터과학과 김희천교수 학습개요 Java 언어문법의기본사항, 자료형, 변수와상수선언및사용법, 각종연산자사용법, if/switch 등과같은제어문사용법등에대해설명한다. 또한 C++ 언어와선언 / 사용방법이다른 Java의배열선언및사용법에대해서설명한다. Java 언어의효과적인활용을위해서는기본문법을이해하는것이중요하다. 객체지향의기본개념에대해알아보고 Java에서어떻게객체지향적요소를적용하고있는지살펴본다.
More informationChap12
12 12Java RMI 121 RMI 2 121 RMI 3 - RMI, CORBA 121 RMI RMI RMI (remote object) 4 - ( ) UnicastRemoteObject, 121 RMI 5 class A - class B - ( ) class A a() class Bb() 121 RMI 6 RMI / 121 RMI RMI 1 2 ( 7)
More information05-class.key
5 : 2 (method) (public) (private) (interface) 5.1 (Method), (public method) (private method) (constructor), 3 4 5.2 (client). (receiver)., System.out.println("Hello"); (client object) (receiver object)
More information12-file.key
11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,
More informationJAVA PROGRAMMING 실습 02. 표준 입출력
자바의기본구조? class HelloJava{ public static void main(string argv[]){ system.out.println( hello,java ~ ){ } } # 하나하나뜯어살펴봅시다! public class HelloJava{ 클래스정의 public static void main(string[] args){ System.out.println(
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More information1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과
1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과 학습내용 1. Java Development Kit(JDK) 2. Java API 3. 자바프로그래밍개발도구 (Eclipse) 4. 자바프로그래밍기초 2 자바를사용하려면무엇이필요한가? 자바프로그래밍개발도구 JDK (Java Development Kit) 다운로드위치 : http://www.oracle.com/technetwork/java/javas
More informationJAVA PROGRAMMING 실습 09. 예외처리
2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오
More informationPowerPoint 프레젠테이션
@ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program
More informationWindows 8에서 BioStar 1 설치하기
/ 콘텐츠 테이블... PC에 BioStar 1 설치 방법... Microsoft SQL Server 2012 Express 설치하기... Running SQL 2012 Express Studio... DBSetup.exe 설정하기... BioStar 서버와 클라이언트 시작하기... 1 1 2 2 6 7 1/11 BioStar 1, Windows 8 BioStar
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More information쉽게 풀어쓴 C 프로그래밍
제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace
More informationPowerPoint 프레젠테이션
제네릭 배효철 th1g@nate.com 1 목차 제네릭 컬렉션 백터 ArrayList HashMap LinkedList Collections 클래스 제네릭만들기 컬렉션과자동박싱 / 언박싱 제네릭의장점 2 제네릭 특정타입만다루지않고, 여러종류의타입으로변신할수있도록클래스나메소드를일반화시키는기법 , , : 타입매개변수 요소타입을일반화한타입 제네릭클래스사례
More information어댑터뷰
04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결
More information쉽게 풀어쓴 C 프로그래밍
Power Java 제 22 장제네릭과컬렉션 이번장에서학습할내용 제네릭클래스 제네릭메소드 컬렉션 ArrayList LinkedList Set Queue Map Collections 클래스 일반적인하나의코드로다양한자료형을처리하는기법을살펴봅시다. 제네릭이란? 제네릭프로그래밍 (generic programming) 다양한타입의객체를동일한코드로처리하는기법 제네릭은컬렉션라이브러리에많이사용
More information쉽게
Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의
More information연습문제이론홀수정답
연습문제이론홀수정답 1 장연습문제 1. 자바언어소스파일의확장자는.java 이고컴파일하면.class 파일이된다. 3. 자바는플랫폼에독립적이며네트워크에연결된어느클라이언트에서도실행이가능하다. 한번프로그램을작성하면어느하드웨어에서나또는어느운영체제에서나자바프로그램을실행시킬수있는것을 WORA(Write Once Run Anywhere) 라고한다. 5. JRE는실행환경으로자바가상기계를포함하고있으며자바실행환경만필요한경우에사용되며,
More informationilist.add(new Integer(1))과 같이 사용하지 않고 ilist.add(1)과 같이 사용한 것은 자바 5.0에 추가된 기본 자료형과 해당 객체 자료 형과의 오토박싱/언박싱 기능을 사용한 것으로 오토박싱이란 자바 컴파일러가 객체를 요구하는 곳에 기본 자료형
바에 제네릭스(generics)를 도입하기 위한 연구는 이미 8년 전인 1996년부터라고 한다. 실제로 자바에 제네릭스를 도입하 는 몇 가지 방안들이 논문으로 나오기 시작한 것이 1998년 초임을 감 안하면 무려 8년이 지난 후에야 자바 5.0에 전격 채택되었다는 것은 이것이 얼마나 어려운 일이었나 하는 것을 보여준다. 자바의 스펙을 결정하는 표준화 절차인
More informationgnu-lee-oop-kor-lec06-3-chap7
어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base
More informationJAVA PROGRAMMING 실습 05. 객체의 활용
public class Person{ public String name; public int age; } public Person(){ } public Person(String s, int a){ name = s; age = a; } public String getname(){ return name; } @ 객체의선언 public static void main(string
More information10 이벤트 처리와 그래픽 프로그래밍.key
[ 10 ] ..,..,,,., 2 1. 3 Section 1 p408 (event) (listen) (event listener) 4 Section 1 [ 1: ] [ 2: ] 5 Section 1 (ActionEvent) (MouseEvent) 6 Section 1 EventObject getsource() 7 Section 1 8 Section 1 MouseListener
More information1
1 2 3 4 5 6 b b t P A S M T U s 7 m P P 8 t P A S M T U s 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Chapter 1 29 1 2 3 4 18 17 16 15 5 6 7 8 9 14 13 12 11 10 1 2 3 4 5 9 10 11 12 13 14 15
More informationPowerPoint Template
16-1. 보조자료템플릿 (Template) 함수템플릿 클래스템플릿 Jong Hyuk Park 함수템플릿 Jong Hyuk Park 함수템플릿소개 함수템플릿 한번의함수정의로서로다른자료형에대해적용하는함수 예 int abs(int n) return n < 0? -n : n; double abs(double n) 함수 return n < 0? -n : n; //
More information6장.key
JAVA Programming 1 2 3, -> () 3 Project FileIO WebFile.class FileCopy.class FileRW.class Tools.class Graphic DObject.class Line.class Rect.class Circle.class Project/FileIO/Tools.class Project/UI/Tools.class
More information<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 24 장입출력 이번장에서학습할내용 스트림이란? 스트림의분류 바이트스트림 문자스트림 형식입출력 명령어행에서입출력 파일입출력 스트림을이용한입출력에대하여살펴봅시다. 스트림 (stream) 스트림 (stream) 은 순서가있는데이터의연속적인흐름 이다. 스트림은입출력을물의흐름처럼간주하는것이다. 스트림들은연결될수있다. 중간점검문제 1. 자바에서는입출력을무엇이라고추상화하는가?
More information<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>
Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.
More information