제 5 장 조건과 반복
조건과 반복 모든 프로그램 언어는 다음의 기능을 제공한다. 5 장 내용: 의사결정 루프에서의 처리과정의 반복 부울식 조건문 데이터 비교 반복문 반복자(iterators) 그리기 수행 GUI 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
목차 if 문과 조건 다른 조건문들 데이터의 비교 while 문 반복자(iterators) 다른 반복문들 결정과 그래픽 새로운 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
제어흐름 제어 흐름(flow of control) 순차 실행 조건 반복 부울식/조건 문장의 수행(실행) 순서 별다른 서술이 없으면, 순차적으로 한 문장 실행 후 다음 문장이 수행된다. 조건 특정한 문장을 수행할 것인가 아닌가를 결정한다. 반복 한 문장을 반복적으로 계속 수행한다. 부울식/조건 참(true)이나 거짓(false)을 정한다. © 2004 Pearson Addison-Wesley. All rights reserved
조건문 조건문 다음에 어떤 문장을 실행할 것인가를 선택한다. 선택문(selection statements)이라고도 한다. 조건문은 기본적 결정을 할 수 있는 기능을 갖는다. if 문 if-else 문 switch 문 © 2004 Pearson Addison-Wesley. All rights reserved
if 문 if 문의 문법 조건은 반드시 부울식이어야 한다. 식의 결과는 참 또는 거짓이어야 한다. if 는 자바 예약어 문장; 조건이 참이면, 문장이 실행된다. 거짓이면, 문장은 건너 뛴다. © 2004 Pearson Addison-Wesley. All rights reserved
if 문의 논리 조건 판단 거짓 문장 참 © 2004 Pearson Addison-Wesley. All rights reserved
부울식 조건 주의 자바의 동등연산자나 관계연산자 들 중에 하나를 사용한다. 이들의 결과는 부울 값(참, 거짓)이다. == 같은 == 같은 != 같지 않은 < 보다 작은 > 보다 큰 <= 보다 작거나 같은 >= 보다 크거나 같은 주의 동등연산자(==)와 배정 연산자(=)의 차이점 © 2004 Pearson Addison-Wesley. All rights reserved
if 문 if 문의 예 조건을 판단한다. 다음에 println 함수가 호출 실행된다 Age.java 참조(214 쪽) if (sum > MAX) delta = sum - MAX; System.out.println ("The sum is " + sum); 조건을 판단한다. sum 값이 MAX 값보다 큰가, 그렇지 않은 가를 판단한다. 만약 조건이 참이면, 배정문이 실행된다. 그렇지 않으면, 이 배정문은 건너 뛴다. 다음에 println 함수가 호출 실행된다 Age.java 참조(214 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
Age.java © 2004 Pearson Addison-Wesley. All rights reserved
들여쓰기(Indentation) if 문 들여쓰기 일관된 들여쓰기 if 문에 의해 제어되는 문장의 관계를 표시하기 위해 프로그램을 읽거나 이해를 쉽게 한다. 비록 컴파일러에게는 차이가 없지만 아주 중요하다. "Always code as if the person who ends up maintaining your code will be a violent psychopath who knows where you live." -- Martin Golding © 2004 Pearson Addison-Wesley. All rights reserved
if 문 다음 문장들은 무엇을 의미하는가? 우선순위 if (top >= MAXIMUM) top = 0; if (total != stock + warehouse) inventoryError = true; total의 값이 stock 과 warehouse의 합과 같지 않으면 플래그를 참으로 변경하라. 우선순위 산술연산자의 우선순위는 동등/관계연산자보다 높다. © 2004 Pearson Addison-Wesley. All rights reserved
논리연산자 논리연산자 논리 NOT 논리 AND와 논리 OR ! 논리 NOT && 논리 AND || 논리 OR 이 연산자들은 모두 부울 피연산자들을 취하고 부울 결과를 만든다. 논리 NOT 단항 연산자이다. (한 개의 피연산자에 대해 연산한다.) 논리 AND와 논리 OR 이항 연산자이다. (2개의 피연산자에 대해 연산한다.) © 2004 Pearson Addison-Wesley. All rights reserved
논리 NOT 논리 NOT 연산 진리표(truth table) 논리 부정(negation) 또는 논리 보수라고도 부른다. 어떤 부울 조건 a 가 참이면, !a는 거짓이다; a 가 거짓이면, !a 는 참이다. 진리표(truth table) a !a 참(true) 거짓(false) © 2004 Pearson Addison-Wesley. All rights reserved
논리 AND 와 논리 OR 논리 AND 식 a && b 논리 OR 식 a || b © 2004 Pearson Addison-Wesley. All rights reserved
논리 연산자 논리 연산자들의 사용한 식 우선순위 if (total < MAX+5 && !found) System.out.println ("Processing…"); 우선순위 논리 연산자는 관계 연산자들보다 우선순위가 낮다. 논리 NOT 논리 AND와 논리 OR보다 높은 우선순위를 갖는다. © 2004 Pearson Addison-Wesley. All rights reserved
논리 연산자 진리표 && 와 || a b a && b a || b true false 항들의 모든 참-거짓 조합을 보여준다. 2개의 피연산자가 필요하므로, 조건 a 와 b 의 4가지 가능한 조합이 만들어진다. a b a && b a || b true false © 2004 Pearson Addison-Wesley. All rights reserved
부울식 진리표를 사용하여 특정 식을 계산할 수 있다. false true total < MAX found !found © 2004 Pearson Addison-Wesley. All rights reserved
단락회로(Short-Circuited) 연산자 논리 AND 와 논리 OR의 처리 A && B A가 true이면 B는 수행할 필요 없다. A || B A가 false이면 B는 수행할 필요 없다. if (count != 0 && total/count > MAX) System.out.println ("Testing…"); © 2004 Pearson Addison-Wesley. All rights reserved
목차 if 문과 조건 다른 조건문들 데이터의 비교 while 문 반복자(iterators) 다른 반복문들 결정과 그래픽 새로운 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
if-else 문 if-else Wages.java 참조(216 쪽) if ( 조건 ) 문장1; else 문장2; 만약 조건이 참이면, 문장1 을 수행한다; 만약 조건이 거짓이면, 문장2 를 수행한다. 두 문장 중 하나만 수행이 된다. Wages.java 참조(216 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
Wages.java © 2004 Pearson Addison-Wesley. All rights reserved
if-else 문의 논리 조건 계산 거짓 문장2 문장1 참 © 2004 Pearson Addison-Wesley. All rights reserved
Coin 클래스 던지는 동전을 표현하는 클래스 실체 데이터(face) CoinFlip.java 참조(218 쪽) 현재 면(앞면 또는 뒷면)을 표시하는데 사용한다. CoinFlip.java 참조(218 쪽) Coin.java 참조(219 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
CoinFlip.java © 2004 Pearson Addison-Wesley. All rights reserved
Coin.java © 2004 Pearson Addison-Wesley. All rights reserved
블록 문 블록문 중괄호({ })로 여러 문장을 같이 묶어서 만들 수 있다. 중괄호({ })로 여러 문장을 같이 묶어서 만들 수 있다. 단일 문이 사용되는 곳이면 어디든지 사용될 수 있다. if (total > MAX) { System.out.println ("Error!!"); errorCount++; } © 2004 Pearson Addison-Wesley. All rights reserved
블록 문 if-else 문 Guessing.java 참조(221 쪽) 블록문 사용 가능 if (total > MAX) { System.out.println ("Error!!"); errorCount++; } else System.out.println ("Total: " + total); current = total*2; Guessing.java 참조(221 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
Guessing.java © 2004 Pearson Addison-Wesley. All rights reserved
조건 연산자 조건 연산자 (conditional operator) 사용 문법: 조건 ? 수식1 : 수식2 부울 조건에 따라 두 수식 중 하나를 수행한다. 전체 조건 연산의 값은 선택된 수식의 값이다. 문법: 조건 ? 수식1 : 수식2 만약 조건 이 참이면, 수식1 을 수행하고; 만약 거짓이면, 수식2 를 수행한다. © 2004 Pearson Addison-Wesley. All rights reserved
조건 연산자 if-else 문과 차이점 예: 조건 연산자 조건 연산은 식으로 결과 값이 있다. larger = ((num1 > num2) ? num1 : num2); 만약 num1 이 num2 보다 크면, num1 이 larger에 배정되고; 아니면, num2 가 larger에 배정된다. 조건 연산자 3개의 피연산를 요구하는 삼항(ternary) 연산자다. © 2004 Pearson Addison-Wesley. All rights reserved
조건 연산자 예: System.out.println ("Your change is " + count + ((count == 1) ? "Dime" : "Dimes")); 만약 count 가 1과 같다면, "Dime" 이 프린트된다. 만약count 가 1이 아닌 다른 값이면, "Dimes" 이 프린트된다. © 2004 Pearson Addison-Wesley. All rights reserved
중첩 if 문 중첩(nested) if 문 MinOfThree.java 참조(224 쪽) else 절 짝짓기 중괄호 사용 if 절이나 else 절의 수행되는 문장이 또 다른 if 문일 수 있다. MinOfThree.java 참조(224 쪽) else 절 짝짓기 앞에 있는 짝을 갖지 않은 가장 가까운 if 문과 짝이 된다. 중괄호 사용 else 절과 짝이 되는 if 문을 명시적으로 지정하는 데 사용 © 2004 Pearson Addison-Wesley. All rights reserved
MinOfThree.java © 2004 Pearson Addison-Wesley. All rights reserved
switch 문 switch 문 switch 문 실행 다음 수행할 문장을 선택하는 문장. 각 경우는 한 개의 값과 연관된 문장을 갖는다. switch 문 실행 수식 값을 계산하고, 그 값이 여러 경우(case) 중의 하나와 같으면 제어는 그 경우와 연관된 문장으로 분기한다. © 2004 Pearson Addison-Wesley. All rights reserved
switch 문 switch 문의 일반적 문법 switch ( 수식 ) switch { 와 case 값1 : case 문장-리스트1 case 값2 : 문장-리스트2 case 값3 : 문장-리스트3 case ... } switch 와 case 는 예약어 만약 수식이 값2와 일치한다면, 제어는 여기로 이동한다. © 2004 Pearson Addison-Wesley. All rights reserved
switch 문 break 문 만약 break 문을 존재하지 않으면 각 case의 마지막 문장으로 사용된다. break 문은 switch 문의 끝으로 제어를 이동한다. 만약 break 문을 존재하지 않으면 제어 흐름은 다음 경우(case) 로 계속된다. 가끔 이 방법이 필요할 때도 있지만, 보통 오직 한 경우만을 수행하기를 원한다. © 2004 Pearson Addison-Wesley. All rights reserved
switch 문 switch 문 예제: switch (option) { case 'A': aCount++; break; case 'B': bCount++; case 'C': cCount++; } © 2004 Pearson Addison-Wesley. All rights reserved
switch 문 디폴트(default) 경우 만약 경우 값과 일치하지 않고 디폴트도 없으면 다른 경우 값과 일치하지 않으면 제어가 이곳으로 넘어간다. 만약 경우 값과 일치하지 않고 디폴트도 없으면 제어는 switch 다음에 있는 문장으로 넘어간다. © 2004 Pearson Addison-Wesley. All rights reserved
switch 문 switch 문의 수식 타입 GradeReport.java 참조(231 쪽) 반드시 int 또는 char 타입이어야 한다. 이 값은 boolean 값, 부동 소수점 값 (float or double), 또는 다른 정수형일 수 없다. GradeReport.java 참조(231 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
GradeReport.java © 2004 Pearson Addison-Wesley. All rights reserved
목차 if 문과 조건 다른 조건문들 데이터의 비교 while 문 반복자(iterators) 다른 반복문들 결정과 그래픽 새로운 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
데이터의 비교 부울식을 사용하여 데이터를 비교할 때, 데이터 형식들의 미묘한 차이를 이해하는 것이 중요하다. 부울식을 사용하여 데이터를 비교할 때, 데이터 형식들의 미묘한 차이를 이해하는 것이 중요하다. 몇 가지 주요 상황을 살펴보자: 부동 소수점 값의 동등(equality) 비교 문자의 비교 문자 스트링의 비교 (알파벳 순서) 객체의 비교와 객체 참조의 비교 © 2004 Pearson Addison-Wesley. All rights reserved
부동 소수점 값의 비교 두 부동 소수점(float or double) 값 비교 임계값을 이용한 비교 동등연산자 (==) 를 사용하지 않는 것이 좋다. 두 수의 이진수 표현이 정확히 일치할 때만 두 값은 같다. 임계값을 이용한 비교 “아주 근사한 값”을 갖는 두 부동 소수점 수를 고려할 수도 있다. 만약 두 부동 소수점 값의 차이가 임계값(tolerance) 보다 작다면, 이는 같다고 볼 수 있다. if (Math.abs(f1 - f2) < TOLERANCE) System.out.println ("Essentially equal"); © 2004 Pearson Addison-Wesley. All rights reserved
문자의 비교 유니코드 예 문자 유니코드 값 0 – 9 48 - 57 A – Z 65 - 90 a – z 97 - 122 각 문자에 대해 특정한 숫자 값을 갖고 있으며, 이에 따라 순서를 정의하고 있다. 이 순서를 이용하여 문자에 대해 관계 연산자를 사용할 수 있다. 예 문자 '+' 는 문자 'J' 보다 작다. 유니코드에서 '+' 가 'J'보다 앞에 있다. 수 문자(0-9)들이 연속적으로 정렬되어 있다. 대문자(A-Z)와 소문자(a-z) 들이 연속적으로 정렬되어 있다. 문자 유니코드 값 0 – 9 48 - 57 A – Z 65 - 90 a – z 97 - 122 © 2004 Pearson Addison-Wesley. All rights reserved
문자 스트링 비교 문자 스트링은 객체이다 ! equals 메소드 두 스트링이 정확히 같은 순서로 같은 문자들을 포함하고 있는지를 결정하한다. 부울 값을 반환한다. if (name1.equals(name2)) System.out.println ("Same name"); © 2004 Pearson Addison-Wesley. All rights reserved
문자 스트링 비교 문자 스트링들을 비교하기 위하여 관계 연산자들을 사용할 수 없다. name1.compareTo(name2)메쏘드 String 클래스가 제공하는 메쏘드로 어떤 문자 스트링이 다른 문자 스트링보다 앞에 있는 지 결정 name1과 name2가 같으면(같은 문자들을 포함하고 있으면) 0을 반환한다. name1이 name2보다 작으면, 음수를 반환한다. name1이 name2보다 크면, 양수를 반환한다. © 2004 Pearson Addison-Wesley. All rights reserved
문자 스트링 비교 문자/문자 스트링 비교 if (name1.compareTo(name2) < 0) System.out.println (name1 + "comes first"); else if (name1.compareTo(name2) == 0) System.out.println ("Same name"); System.out.println (name2 + "comes first"); 문자/문자 스트링 비교 문자 집합에 기초한 사전식 순서 (lexicographic ordering) 대문자와 소문자가 혼합되었을 때, 엄밀하게 알파벳순이 아니다. "Great" < "fantastic" © 2004 Pearson Addison-Wesley. All rights reserved
목차 if 문과 조건 다른 조건문들 데이터의 비교 while 문 반복자(iterators) 다른 반복문들 결정과 그래픽 새로운 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
반복문 반복문(Repetition statements) 자바의 3개의 반복문 한 문장을 여러 번 수행할 수 있도록 한다. 루프( loops)라고도 한다. 조건문 같이, 반복문은 부울식에 의해 제어된다. 자바의 3개의 반복문 while 루프 do 루프 for 루프 © 2004 Pearson Addison-Wesley. All rights reserved
while 문 while 문의 문법: while ( 조건 ) 문장; 만약 조건 이 참이면, 문장 이 수행된다. 그리고 조건이 다시 계산되고, 아직도 참이면 문장은 계속 수행된다. 조건이 거짓이 될 때까지 반복적으로 문장은 수행된다. © 2004 Pearson Addison-Wesley. All rights reserved
while 루프의 논리 조건의 계산 거짓 참 문장 © 2004 Pearson Addison-Wesley. All rights reserved
while 문 예제 int count = 1; while (count <= 5) { System.out.println (count); count++; } 만약 while 루프의 조건이 처음에 거짓이면, 문장은 전혀 수행되지 않는다. while 루프의 본체(body) 0번 혹은 그 이상 번 수행된다. © 2004 Pearson Addison-Wesley. All rights reserved
Average.java © 2004 Pearson Addison-Wesley. All rights reserved
WinPercentage.java © 2004 Pearson Addison-Wesley. All rights reserved
무한 루프 무한 루프 while 루프의 본체는 결국 조건이 거짓이 되어야 끝난다. 그렇지 않으면, 무한 루프(infinite loop)가 된다 사용자가 프로그램을 멈출 때 까지 수행된다. 이것은 통상 논리적 오류(logical error)이다. 루프가 정상적으로 종료되도록 철저히 점검하자 ! © 2004 Pearson Addison-Wesley. All rights reserved
무한 루프 예제 int count = 1; while (count <= 25) { System.out.println (count); count = count - 1; } 이 루프는 프로그램 취소(Control-C)를 하거나 언더플로우 오류( underflow error)가 발생할 때까지 계속 수행한다. © 2004 Pearson Addison-Wesley. All rights reserved
중첩 루프 중첩 if 문과 유사하게, 루프도 중첩될 수 있다. 즉, 루프의 몸체에 다른 루프를 포함할 수 있다. 각 외부 루프의 반복에 대하여, 내부 루프는 완벽하게 반복한다. PalindromeTester.java 참조(241쪽) © 2004 Pearson Addison-Wesley. All rights reserved
PalindromeTester.java © 2004 Pearson Addison-Wesley. All rights reserved
중첩 루프 문자 스트링 "Here" 는 몇 번 출력이 될까? 10 * 20 = 200 count1 = 1; while (count1 <= 10) { count2 = 1; while (count2 <= 20) System.out.println ("Here"); count2++; } count1++; 10 * 20 = 200 © 2004 Pearson Addison-Wesley. All rights reserved
목차 if 문과 조건 다른 조건문들 데이터의 비교 while 문 반복자(iterators) 다른 반복문들 결정과 그래픽 새로운 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
do 문 do 문의 문법: do { 문장; } while ( 조건 ) 문장 이 한번 초기에 수행된다.다음에 조건 이 계산된다. 문장 이 한번 초기에 수행된다.다음에 조건 이 계산된다. 조건이 거짓이 될 때까지 문장은 반복적으로 수행된다. © 2004 Pearson Addison-Wesley. All rights reserved
do 루프의 논리 문장 참 조건의 계산 거짓 © 2004 Pearson Addison-Wesley. All rights reserved
do 문 do 루프의 에제: do 루프의 몸체는 적어도 1회 수행된다. ReverseNumber.java 참조(249 쪽) int count = 0; do { count++; System.out.println (count); } while (count < 5); do 루프의 몸체는 적어도 1회 수행된다. ReverseNumber.java 참조(249 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
ReverseNumber.java © 2004 Pearson Addison-Wesley. All rights reserved
while 과 do 의 비교 while 루프 do 루프 문장 조건 계산 참 거짓 조건 계산 참 문장 거짓 © 2004 Pearson Addison-Wesley. All rights reserved
for 문 for 문의 문법: 루프가 시작되기 전에 문장 은 조건 이 거짓이 초기화가 한번 수행된다. 될 때까지 수행된다. 문장; 각 반복의 끝에 증가 부분은 수행된다. © 2004 Pearson Addison-Wesley. All rights reserved
for 루프의 논리 초기화 조건 계산 거짓 문장 참 증가 © 2004 Pearson Addison-Wesley. All rights reserved
for 문 for 루프는 기능적으로 다음의 while 루프 구조와 동등하다: 초기화; while ( 조건 ) { 문장; 증가; } © 2004 Pearson Addison-Wesley. All rights reserved
for 문 for 루프의 예제: 초기화 영역 for 루프의 조건 for 루프의 본체 for (int count=1; count <= 5; count++) System.out.println (count); 초기화 영역 변수를 선언하고 초기화 for 루프의 조건 while 루프와 같이, 루프 몸체를 수행하기 전에 검사한다. for 루프의 본체 0번 이상 수행된다. © 2004 Pearson Addison-Wesley. All rights reserved
for 문 증가 영역은 어떤 계산도 수행될 수 있다. for 루프는 특정 횟수 만큼 문장들을 수행하고자 할 때 적절하다. for (int num=100; num > 0; num -= 5) System.out.println (num); for 루프는 특정 횟수 만큼 문장들을 수행하고자 할 때 적절하다. Multiples.java 참조 (252 쪽) Stars.java 참조 (254 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
Multiples.java © 2004 Pearson Addison-Wesley. All rights reserved
Stars.java © 2004 Pearson Addison-Wesley. All rights reserved
for 문 for 루프의 앞 부분에 있는 각 수식은 선택 사항이다. 만약 초기화가 없다면, 초기화는 수행되지 않는다. 만약 초기화가 없다면, 초기화는 수행되지 않는다. 만약 조건이 없다면, 항상 참으로 결정한다. 그러므로 무한 루프를 유발한다. 만약 증가가 없다면, 증가 연산이 수행되지 않는다. © 2004 Pearson Addison-Wesley. All rights reserved
목차 if 문과 조건 다른 조건문들 데이터의 비교 while 문 반복자(iterators) 다른 반복문들 결정과 그래픽 새로운 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
그리기 기술 조건과 루프는 재미있는 그림을 만들어내는 능력을 향상시켜준다. Bullseye.java 참조(256 쪽) 조건과 루프는 재미있는 그림을 만들어내는 능력을 향상시켜준다. Bullseye.java 참조(256 쪽) BullseyePanel.java 참조(257 쪽) Boxes.java 참조(259 쪽) BoxesPanel.java 참조(260 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
Bullseye.java © 2004 Pearson Addison-Wesley. All rights reserved
BullseyePanel.java © 2004 Pearson Addison-Wesley. All rights reserved
Boxes.java © 2004 Pearson Addison-Wesley. All rights reserved
BoxesPanel.java © 2004 Pearson Addison-Wesley. All rights reserved
BoxesPanel.java(계속) © 2004 Pearson Addison-Wesley. All rights reserved
이벤트 소스의 결정 상호작용 GUI는, 컴포넌트 이벤트들에 반응하는 컴포넌트들과 감청자(listener)들 사이에 관계를 설정할 것을 요구한다는 것을 유념하라. 하나의 감청자 객체는 두개의 다른 컴포넌트를 감청하는데 사용될 수 있다. 이벤트의 소스는 감청자에게 전달되는 이벤트의 getSource 메소드를 사용하여 결정될 수 있다. LeftRight.java 참조(262 쪽) LeftRightPanel.java 참조 (263 쪽) © 2004 Pearson Addison-Wesley. All rights reserved
LeftRight.java © 2004 Pearson Addison-Wesley. All rights reserved
LeftRightPanel.java © 2004 Pearson Addison-Wesley. All rights reserved
LeftRightPanel.java(계속) © 2004 Pearson Addison-Wesley. All rights reserved
목차 if 문과 조건 다른 조건문들 데이터의 비교 while 문 반복자(iterators) 다른 반복문들 결정과 그래픽 새로운 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved
대화 상자 대화상자(dialog box) 다음과 같이 사용된다: 현재 활성화된 윈도우 상에 떠오르는 그래픽 윈도우이다. 정보를 전할 때 어떤 결정을 확인할 때 사용자에게 데이터를 입력하도록 할 때 색을 선택할 때 파일을 선택할 때 © 2004 Pearson Addison-Wesley. All rights reserved
대화 상자 JOptionPane 클래스 EvenOdd.java 참조(266 쪽) 일부 형식의 대화상자를 생성하는 것을 간단히 하는 메소드들을 제공한다. EvenOdd.java 참조(266 쪽) 색상들과 파일들을 선택하는 대화 상자들을 9장에서 알아 본다. © 2004 Pearson Addison-Wesley. All rights reserved
EvenOdd.java © 2004 Pearson Addison-Wesley. All rights reserved
체크 상자 체크 상자(check box) ItemListener 인터페이스 온(on)이나 오프(off)로 선택될 수 있는 버튼이다. JCheckBox 클래스에 의해 표현된다. 체크 상자는 상태(on 또는 off)가 변경될 때마다 아이템 이벤트(item event)를 만들어낸다. ItemListener 인터페이스 아이템 이벤트 감청자들을 정의하는데 사용된다. 체크 상자는 상태가 변경되었을 때 감청자의 itemStateChanged 메소드 를 호출한다. © 2004 Pearson Addison-Wesley. All rights reserved
체크 상자 체크 상자를 사용하여 라벨의 텍스트 스트링 양식을 결정하는 프로그램을 살펴보자. 체크 상자를 사용하여 라벨의 텍스트 스트링 양식을 결정하는 프로그램을 살펴보자. Font 클래스를 사용한다. 이것은 문자 폰트의 다음 사항을 나타낸다: 글꼴 명 (Times 나 Courier 같은) 양식 (bold, italic, 또는 둘 모두) 폰트 크기 StyleOptions.java 참조 (269 쪽) StyleOptionsPanel.java 참조 (270 쪽 ) © 2004 Pearson Addison-Wesley. All rights reserved
StyleOptions.java © 2004 Pearson Addison-Wesley. All rights reserved
StyleOptionsPanel.java © 2004 Pearson Addison-Wesley. All rights reserved
StyleOptionsPanel.java(계속) © 2004 Pearson Addison-Wesley. All rights reserved
라디오 버튼 라디오 버튼 같이 작동하는 라디오 버튼의 집단을 정의 상호배타적인 선택 집합을 나타낸다. 임의의 시점에 오직 하나만 선택되어진다. 한 라디오 버튼이 선택되어졌을 때, “on”인 버튼은 자동적으로 off로 전환된다. 같이 작동하는 라디오 버튼의 집단을 정의 각 라디오 버튼은 ButtonGroup 객체에 추가되어야 한다. 라디오 버튼은 액션 이벤트(ActionEvent)를 발생시킨다. © 2004 Pearson Addison-Wesley. All rights reserved
라디오 버튼 라디오 버튼을 사용하여 어느 줄의 글을 나타낼 것인가를 결정하는 프로그램을 보자. 라디오 버튼을 사용하여 어느 줄의 글을 나타낼 것인가를 결정하는 프로그램을 보자. QuoteOptions.java 참조(273 쪽 ) QuoteOptionsPanel.java 참조 (274 쪽) 체크 상자와 라디오 버튼을 비교 대비해보자. 체크 상자는 독립적으로 부울 선택을 제공하는 일을 한다. 라디오 버튼은 집단으로 상호 배타적 선택을 할 수 있는 집합을 제공하는 일을 한다. © 2004 Pearson Addison-Wesley. All rights reserved
QuoteOptions.java © 2004 Pearson Addison-Wesley. All rights reserved
QuoteOptionsPanel.java © 2004 Pearson Addison-Wesley. All rights reserved
QuoteOptionsPanel.java(계속) © 2004 Pearson Addison-Wesley. All rights reserved
요약 부울식 조건문 데이터 비교 반복문 반복자(iterators) 그리기 기술 다른 GUI 컴포넌트 © 2004 Pearson Addison-Wesley. All rights reserved