5. high level gui programming (1) j2se 에서 gui 프로그래밍 awt 와 swing 패키지 사용

44
High level GUI Programmin g (1) 1 5. High level GUI Programming (1) J2SE 에에 GUI 에에에에에 AWT 와 Swing 와와와 와와 WIPI GUI 에에에 와와 , 와와 , 와와와 와와 , 와와와와 와와 와와 에에에에 에에와 와와와와 와와 , 와와와와와와 와와 와와 와와와 와와와 와와 와와 와와와와 와와와 와와와 와와와 에에에 에에 에에에와 와와

Upload: vila

Post on 11-Jan-2016

49 views

Category:

Documents


0 download

DESCRIPTION

5. High level GUI Programming (1) J2SE 에서 GUI 프로그래밍 AWT 와 Swing 패키지 사용. WIPI GUI 패키지 라벨 , 버튼 , 텍스트 필드 , 체크박스 등과 같은 컴포넌트 부분 을 적절하게 조합 , 배치함으로써 화면 구성 그래픽 처리를 위한 그림 그리기나 이미지 처리와 관련된 그래픽 관련 클래스 를 사용. ShellComponent Card 클래스와 연결 , 제목 과 명령 입력 컴포넌트 , 작업 컴포넌트 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 1

5. High level GUI Programming (1)

J2SE 에서 GUI 프로그래밍 AWT 와 Swing 패키지 사용

WIPI GUI 패키지 라벨 , 버튼 , 텍스트 필드 , 체크박스 등과 같은 컴포넌트 부분을 적절하게

조합 , 배치함으로써 화면 구성 그래픽 처리를 위한 그림 그리기나 이미지 처리와 관련된 그래픽 관련

클래스를 사용

Page 2: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 2

ShellComponent Card 클래스와 연결 , 제목과 명령 입력 컴포넌트 , 작업 컴포넌트 UI 컴포넌트를 화면에 보여주기 위해 맨 상단에 이 컴포넌트 사용 GUI 컴포넌트를 하나로 묶어서 처리할 수 있도록 컨테이너 ( 예 , AWT) 가

필요한데 그것을 담당하는 컴포넌트 ContainerComponent 를 상속하여 구현한 ShellComponent 는 하위

컴포넌트의 위치와 크기를 결정해 주는 상위 부모 컴포넌트이다 .

ShellComponent 구성도

java.lang.Object

org.kwis.msp.lwc.Component

org.kwis.msp.lwc.ContainerComponent

org.kwis.msp.lwc.ShellComponent

Page 3: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 3

모든 GUI 컴포넌트는 자신을 표현하기 위하여 자신 보다 상위에 있는 단 하나의 부모 컴포넌트를 가져야 하는데 그것이 ShellComponent 이다 .

ShellComponent 는 Card 클래스를 상속 받지 않지만 , 내부적으로 Card 를 가지고 있어 getCard() 메소드를 통해서 Card 객체를 얻음

자식 컴포넌트를 화면에 보여주기 위하여 맨 상단에 ShellComponent 를 위치하고 그 위에 addComponent 메소드를 통하여 UI 컴포넌트를 등록하여야 한다 . ( 주의 ; addComponent 메소드를 한번만 호출 )

ShellComponent 주요 생성자

생성자 기능ShellComponent() 화면 크기로 ShellComponent 를 생성한다 .

ShellComponent(boolean inflate)

inflate 에 따라서 전체 화면에 맞출 것인지 , 내부 컴포넌트에 맞출 것인지를 결정하여 ShellComponent를 생성한다 .

ShellComponent(int x, int y, int w, int h)

지정한 크기로 ShellComponent 를 생성한다 .

Page 4: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 4

ShellTest.java1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class ShellTest extends Jlet {

4. ShellComponent shell;

5. protected void startApp(String args[]) {

6. shell = new ShellComponent();

7. shell.setTitle(new ButtonComponent(" 타이틀 ", null));8. shell.addComponent(new ButtonComponent(" 작업컴포넌트 ", null));9. shell.setCommand(new ButtonComponent(" 커맨드 ", null), false);10. shell.show();11. // Display.getDefaultDisplay().pushCard(shell.getCard());12. }

13. protected void pauseApp(){14. }

15. protected void resumeApp(){16. }

17. protected void destroyApp(boolean b){18. }

19. }

Page 5: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 5

shell = new ShellComponent();를

사용한 경우

Page 6: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 6

ShellTest1.java1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class ShellTest1 extends Jlet {

4. protected void startApp(String args[]) {

5. Display display = Display.getDefaultDisplay();6. ShellComponent shell = new ShellComponent(30,30,7. Display.getDefaultDisplay().getWidth()/2,8. Display.getDefaultDisplay().getHeight()/2);

9. shell.setTitle(new ButtonComponent(" 타이틀 ", null));10. shell.addComponent(new ButtonComponent(" 작업컴포넌트 ", null));11. shell.setCommand(new ButtonComponent(" 커맨드 ", null), false);12. shell.show();13. // Display.getDefaultDisplay().pushCard(shell.getCard());14. }

15. protected void pauseApp(){16. }

17. protected void resumeApp(){18. }

19. protected void destroyApp(boolean b){20. }

21. }

Page 7: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 7

메소드 기능int addComponent(Component cmp) 자식 컴포넌트를 하나 추가한다 .

void addComponent(int index, Component cmp) 지정한 index 위치에 자식 컴포넌트를 하나 추가한다 .

void configure(int x, int y, int h, int mask) 컴포넌트의 위치나 크기를 변경한다 .

protected void controlInset(boolean flag) ContainerComponent 에서 사용할 테두리 두께 값을 제어한다 .

Card getCard() 현재 컴포넌트에 연결된 카드를 돌려준다 .

Component getCommand() 지정된 커맨드 컴포넌트를 돌려준다 .

protected Component getNextTraversalComponent()

포커스를 가질 수 있는 다음 컴포넌트를 돌려준다 .

protected Component getPrevTraversalComponent()

포커스를 가질 수 있는 이전 컴포넌트를 돌려준다 .

Component getTitle() 지정된 타이틀을 돌려준다 .

Component getWorkComponent() 지정된 컴포넌트를 돌려준다 .

int getX() x 축의 좌표를 돌려준다 .

int getY() y 축의 좌표를 돌려준다 .

void grabKey(int key) 특정 키코드를 그랩하여 GrabKeyListener 에게 보낸다 .

void hide() 컴포넌트를 감춘다 .

boolean isShown() 현재 컴포넌트가 보이는지 , 안 보이는지 여부를 돌려준다 .

protected boolean keyNotify(int type, int chr) 키 입력을 받으면 호출된다 .

ShellComponent 주요 메소드

Page 8: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 8

메소드 기능void layout() 하위 컴포넌트의 크기와 위치를 결정한다 .

protected boolean processEvent(int type, int subtype, int param1, int param2)

이벤트를 처리한다 .

void removeComponent(Component cmp) 지정된 컴포넌트를 삭제한다 .

void repaint(int x, int y, int w, int h) 화면의 내용을 갱신할 필요가 있을 때 호출한다 .

void serviceRepaints() 갱신된 내용을 즉시 화면에 출력해 준다 .

void setCommand(Component cmp, boolean bGrab)

커맨드를 지정한다 .

void setGrabKeyListener(GrabKeyListner listener, Object obj)

그램 키 리스너를 등록한다 .

void setTitle(Component cmp) 타이틀을 지정한다 .

void setTitle(String str) 타이틀 문자열을 지정한다 .

void setWorkComponent(Component cmp) 컴포넌트를 설정한다 .

void show() 컴포넌트를 화면상에 보여준다 .

void showNotify(boolean b) 화면의 내용이 보이는 호출된다 .

void show() 화면의 내용이 보이는 호출된다 .

void ungrabKey(int key) 특정 키에 대한 그랩을 해제한다 .

Page 9: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 9

FormComponent

UI 컴포넌트는 컨테이너에 부착하지 않으면 독자적인 화면을 구성하지 못함 다양한 컴포넌트를 일렬로 배열하여 화면을 구성하는 컴포넌트 ContainerComponent 를 확장하여 자식컴포넌트로서 다양한 컴포넌트를 담아서

화면을 구성하는 컴포넌트 여러 개의 자식 컴포넌트를 가지고 있어 , 각 컴포넌트의 위치를 결정 Button, TextField, Label, List 등을 혼합하여 다양한 UI 컴포넌트를 혼합할 수

있으며 , addcomponent, removeComponent 메소드를 통해서 각 컴포넌트의 삽입 , 추가 , 삭제할 수 있다 .

자식 컴포넌트를 수평으로 정렬 ; FormComponent(true)

자식 컴포넌트를 수직으로 정렬 ; FormComponent(false)

자식 컴포넌트의 포커스 변경 ; UP / DOWN 키 사용

Page 10: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 10

FormComponent 주요 생성자

생성자 기능

FormComponent() FormComponent 를 생성한다 .

FormComponent(boolean bVertical)

- bVertical 인자값이 false 를 넘기면 수직 정렬- bVertical 인자값이 true 를 넘기면 수평 정렬

Page 11: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 11

메소드 기능protected void calcPreferredSize(int cw) 컴포넌트의 적절한 크기를 계산한다 .

void focusNotify(boolean b) 포커스를 받으면 호출된다 .

int getGab() 컴포넌트 간의 간격을 돌려준다 .

protected Component getNextTraversal(Component)

포커스를 가질 수 있는 다음 컴포넌트를 돌려준다 .

boolean getPacked() 자식 컴포넌트의 폭을 맞출 것인지 여부를 돌려준다 .

protected Component getPrevTraversalComponent()

포커스를 가질 수 있는 이전 컴포넌트를 돌려준다 .

protected boolean keyNotify(int type, int key) 키 입력을 받으면 호출된다 .

void layout() 하위 컴포넌트의 크기와 위치를 결정한다 .

void paint(Graphics g) 컴포넌트를 그린다 .

void removeAllComponent() 모든 컴포넌트를 삭제한다 .

protected boolean scrollTo(int dx, int dy) 특정 위치로 화면을 이동한다 .

void setFocus(Component c) 지정한 컴포넌트에 포커스를 지정한다 .

void setGab(int grab) 컴포넌트 간의 간격을 결정한다 .

void setPacked(boolean b) 폼 내부의 컴포넌트의 폭을 폼의 폭으로 맞출 것인지 여부를 지정한다 .

FormComponent 주요 메소드

Page 12: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 12

FormText.java1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class FormTest extends Jlet {4. protected void startApp(String args[]){5. ShellComponent shell = new ShellComponent();6. FormComponent baseform = new FormComponent();7. FormComponent vform = new FormComponent(false);// 수직 정렬8. FormComponent hform = new FormComponent();// 수평 정렬9. shell.setTitle(" 폼 컨포넌트 예제 ");

10. vform.addComponent(new LabelComponent(" 라벨 "));11. vform.addComponent(new ButtonComponent(" 버튼 ", null));12. vform.setGab(20);13. hform.addComponent(new TextFieldComponent(" 텍스트필드 ",

TextFieldComponent.CONSTRAINT_ANY));14. hform.addComponent(new TextFieldComponent(" 텍스트필드 ",

TextFieldComponent.CONSTRAINT_ANY));15. hform.addComponent(new TextFieldComponent(" 텍스트필드 ",

TextFieldComponent.CONSTRAINT_ANY));16. hform.addComponent(new TextFieldComponent(" 텍스트필드 ",

TextFieldComponent.CONSTRAINT_ANY));17. hform.addComponent(new TextFieldComponent(" 텍스트필드 ",

TextFieldComponent.CONSTRAINT_ANY));

18. baseform.addComponent(vform);19. baseform.addComponent(hform);20. shell.addComponent(baseform);

21. shell.show();22. }

23. protected void pauseApp(){24. }

25. protected void resumeApp(){26. }

27. protected void destroyApp(boolean b){28. }29. }

Page 13: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 13

Page 14: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 14

ButtonComponent – ‘ 확인’ 또는 ‘ OK’ 버튼

버튼을 누르면 이벤트가 발생하고 , 이 이벤트를 처리하는 모듈에 전달하여 원하는 동작을 수행하게 하는 컴포넌트이다 .

버튼의 구성 ; 문자열과 이미지 ButtonComponent 주요 생성자

생성자 기능ButtonComponent() ButtonComponent 를 생성한다 .

ButtonComponent(String str, Image img)

지정된 Image 의 문자열 버튼을 생성한다 .

생성된 버튼을 눌렀을 때 어떤 동작을 수행시키려면 ActionListener 을 구현한 뒤 버튼에 다음과 같은 메소드를 등록해 주면 된다 .

public void setActionListener(ActionListner I, Object o)

버튼을 누르면 해당 컴포넌트와 o 를 인수로 ActionListner 의 action() 메소드를 호출한다 .

매개변수 : I – 버튼의 동작을 구현한 ActionListner o – 불려질 때 넘겨질 인수 , 인수가 필요 없을 겨우 null 을 지정

Page 15: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 15

ActionListner 인터페이스는 다음 한 메소드만 정의하고 있다 .

public void action(Component cmp, Object o)

이벤트가 발생하면 호출된다 .

매개변수 : - cmp : 이벤트가 발생한 컴포넌트 - o : setActionListner 에 넣은 Object 인수

ButtonComponent 의 주요 메소드

메소드 기능protected void calcPreferredSize(int w) 컴포넌트의 적절한 트기를 계산한다 .

Font getFont() 폰트를 돌려준다 .

Image getImage() 현재 버튼의 이미지를 돌려준다 .

String getString() 현재 버튼의 문자열을 돌려준다 .

boolean keyNotify(int type, int chr) 키 입력을 받으면 호출된다 .

protected void layout() 하위 컴포넌트의 크기와 위치를 결정한다 .

void paintContent(Graphics g) 내부를 칠한다 .

void setActionListerner(ActionListernet I, Object O)

ActionListerner 를 등록한다 .

void setFont(Font ft) 버튼의 폰트를 설정한다 .

Page 16: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 16

void setImage(Image img) 버튼의 이미지를 지정한다 .

void setString(String str) 버튼의 문자열을 지정한다 .

ButtonTest.java1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class ButtonTest extends Jlet implements ActionListener{4. int plus = 0;5. ShellComponent shell = new ShellComponent();6. FormComponent form = new FormComponent();7. ButtonComponent button = new ButtonComponent(plus+" 번 누름 ", null);

8. protected void startApp(String args[]){

9. button.setActionListener(this, null);10. form.addComponent(button);11. shell.addComponent(form);12. shell.setTitle(" 버튼 테스트 ");13. shell.show();14. }

15. protected void pauseApp(){16. }

17. protected void resumeApp(){18. }

19. protected void destroyApp(boolean b){20. }

21. public void action(Component c, Object o){22. if (c == button){23. plus++;24. button.setString(plus+" 번 누름 ");25. }26. }27. }

Page 17: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 17

Page 18: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 18

LabelComponent

핸드폰 화면상에 고정 문자열을 표시할 때 주로 사용하는 컴포넌트이다 .

LabelComponent 는 setLayout(int) 를 사용하여 정렬형태를 지정할 수 있다 .

정렬 조합 규칙

public static final int LAYOUT_LEFT 컴포넌트 좌측 정렬 값 . 이미지나 문자 데이터의 위치를 컴포넌트의 영역에서 좌측으로 정렬한다 , ‘1’ 값이 지정되어 있다 .

public static final int LAYOUT_RIGHT 컴포넌트 우측 정렬 값 . 이미지나 문자 데이터의 위치를 컴포넌트의 영역에서 우측으로 정렬한다 , ‘2’ 값이 지정되어 있다 .

public static final int LAYOUT_HCENTER

컴포넌트 가운데 수평 정렬 값 . ‘4’ 값이 지정되어 있다 .

public static final int LAYOUT_TOP 컴포넌트 위쪽 정렬 값 . ‘8’ 값이 지정되어 있다 .

public static final int LAYOUT_BOTTOM

컴포넌트 아래쪽 정렬 값 . ‘16’ 값이 지정되어 있다 .

public static final int LAYOUT_VCENTER

컴포넌트 가운데 수직 정렬 값 . ‘32’ 값이 지정되어 있다 .

Page 19: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 19

LabelComponent 주요 생성자

생성자 기능LabelComponent() LabelComponent 를 생성한다 .

LabelComponent(String str) 주어진 문자열로 LabelComponent 를 생성한다 .

LabelComponent(String str, Image img)

주어진 문자열과 이미지로 LabelComponent 를 생성한다 .

LabelComponent(String str, String imgString)

주어진 문자열과 지정한 지원에서 읽어 들이는 데이터로 LabelComponent 를 생성한다 .

Page 20: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 20

LabelComponent 주요 메소드

메소드 기능

protected void calcPreferredSize(int cw)

컴포넌트의 적절한 크기를 계산한다 .

Font getFont() 폰트를 돌려준다 .

Image getImage() 내부 이미지를 가져온다 .

String getLabel() 내부 문자열을 가져온다 .

void paintContent(Graphics g) 내부를 칠한다 .

void setFont(Font ft) 폰트를 지정한다 .

void setImage(Image img) 내부 이미지를 주어진 이미지로 지정한다 .

void setLabel(String str) 내부 문자열을 주어진 문자열 값으로 지정한다 .

void setLayout(int layout) 정렬형태를 지정한다 .

Page 21: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 21

LabelTest.java1. import java.io.IOException;

2. import org.kwis.msp.lcdui.*;3. import org.kwis.msp.lwc.*;

4. public class LabelTest extends Jlet implements ActionListener{

5. ShellComponent shell;6. FormComponent form;7. LabelComponent label1;8. LabelComponent label2;9. LabelComponent label3;10. LabelComponent label4;11. ButtonComponent button;12. Image img;13. int intVal = 0;

14. protected void startApp(String args[]) {15. shell = new ShellComponent();16. form = new FormComponent();17. button = new ButtonComponent("label 생성 ", null);18. button.setActionListener(this, null);19. form.addComponent(button);20. shell.addComponent(form);21. shell.setTitle("Label 테스트 ");22. shell.show();23. }

24. protected void pauseApp(){25. }26. protected void resumeApp(){27. }28. protected void destroyApp(boolean b){29. }

Page 22: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 22

33. public void action(Component c, Object o){34. if (c == button){35. intVal++;36. makeLabel(intVal);37. }38. }

39. public void makeLabel(int intVal){40. if ( intVal == 1)41. {42. // 1. 빈 라벨 생성후 setLabel() 메소드 호출43. label1 = new LabelComponent();44. label1.setLabel("label1");45. form.addComponent(label1);46. }else if ( intVal == 2)47. {48. // 2. 문자열을 지정해서 생성49. label2 = new LabelComponent("label2");50. form.addComponent(label2);51. }else if (intVal == 3)52. {53. // 3. 이미지 지정해서 생성54. try {55. img = Image.createImage("coffee.gif");56. label3 = new LabelComponent("label3", img);57. form.addComponent(label3);58. }catch (IOException e) {59. }60. }else if (intVal == 4)61. {62. // 4. 이미지 경로를 지정해서 생성63. label4 = new LabelComponent("label4", "coffee.gif");64. form.addComponent(label4);65. }66. }67. }

Page 23: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 23

Page 24: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 24

ListComponent/ListItemComponent

ListComponent 는 리스트 항목들을 화면에 순차적으로 나열해서 보여주고 사용자가 하나 또는 그 이상의 리스트 항목들을 선택할 수 있도록 하는 컴포넌트이다 .

리스트 항목을 구현하는 컴포넌트 ; ListItemComponent

ListComponent 계층도 ListItemComponent 만을 추가할 수 있다 .

java.lang.Object

org.kwis.msp.lwc.Component

org.kwis.msp.lwc.ContainerComponent

org.kwis.msp.lwc.FormComponent

org.kwis.msp.lwc.ListComponent

Page 25: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 25

ListComponent 선택방법의 3 가지 유형

public static final int SELECT_IMPLICIT 가장 일반적인 유형으로서 현재 포커스를 가진 항목을 선택할 수 있는 유형 . 포커스 된 항목과 선택된 항목이 동일하다 . 따라서 하나의 항목만 선택된다 .

public static final int SELECT_EXCLUSIVS

라디오 버튼과 같은 동작을 하는 유형으로서 단 하나의 항목만을 선택할 수 있지만 , 현재 포커스 된 항목과 선택된 항목이 반드시 일치하지는 않는다 .

public static final int SELECT_MULTIPLE

체크박스와 같은 동작을 하는 유형으로서 여러 개의 항목을 선택할 수 있으며 그 각각의 항목들을 선택 또는 해제할 수 있다 .

ListComponent 의 이벤트를 처리하기 위한 2 가지 인터페이스 select 키를 누르거나 숫자 키를 눌러 항목을 선택할 경우 ActionListener 의

action() 메소드가 호출 포커스 된 항목이 변경되었을 경우 ChangeLisetener 의 changed()

메소드가 호출

Page 26: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 26

ListComponent 주요 메소드메소드 기능

int addComponent(Component cmp) 컴포넌트를 하나 추가한다 . 이 대 추가한 컴포넌트는 ListItemComponent 이다 .

void addComponent(int index, Component cmp)

index 위치에 컴포넌트를 하나 추가한다 .

int append(String str, Image img) ListComponent 에 주어진 이미지 데이터와 문자 데이터로 ListItemComponent 를 생성하여 추가한다 .

void controlNumber(boolean ShowImage)

번호의 출력 여부를 지정한다 .

Image getImage(int index) 주어진 위치에 있는 ListItemComponent 의 이미지를 얻어온다 .

protected Component getNextTraversalComponent()

포커스를 가질 수 있는 다음 컴포넌트를 돌려준다 .

protected Component getPrevTraversalComponent()

포커스를 가질 수 있는 이전 컴포넌트를 돌려준다 .

int getSelectedIndex() ListComponent 의 항목들 중 현재 선택되어 있는 항목의 인덱스를 얻어온다 .

int[] getSelectedIndexs() ListComponent 의 항목들 중 현재 선택되어 있는 항목들의 인덱스를 얻어온다 .

int getSize() ListComponent 에 추가된 항목의 개수를 얻어온다 .

String getString(int index) 주어진 위치에 있는 ListItemComponent 의 문자열을 얻어온다 .

Page 27: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 27

int insert(int index, String str, Image img)

해당 위치에 주어진 문자열과 이미지로 ListItemComponent 를 생성하여 추가한다 .

boolean isControlNumber() 번호 출력 상태를 반환한다 .

boolean isSelected(int index); 주어진 인덱스의 항목이 현재 선택되어 있는지 여부를 반환한다 .

protected boolean keyNotify(int type, int key)

키 입력을 받으면 호출한다 .

void select(int index) 주어진 위치의 항목을 선택한다 .

void select(ListItemComponent cmp) 주어진 항목을 선택한다 .

void set(int index, String str, Image img) 해당 위치에 주어진 문자열과 이미지로 ListItemComponent 를 생성하여 새로 지정한다 .

void setActionListener(ActionListener I, Object o)

ListComponent 에 ActionListener 를 등록한다 .

void setChangeListener(ChangeListener I, Object o)

ListComponent 에 ChangeLisetener 를 등록한다 .

void setComponent(int index, Component cmp)

자식 컴포넌트를 하나 추가한다 .

Page 28: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 28

ListTest.java1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class ListTest extends Jlet implements ActionListener, ChangeListener{4. 5. ShellComponent shell;6. ListComponent list;

7. protected void startApp(String args[]) {

8. shell = new ShellComponent();9. shell.setTitle(" 좋아하는과일은 ?");

10. list = new ListComponent(ListComponent.SELECT_IMPLICIT);11.

12. ListItemComponent item1 = new ListItemComponent(" 수박 ","watermelon.gif");13. ListItemComponent item2 = new ListItemComponent(" 참

외 ","melon.gif");14. ListItemComponent item3 = new ListItemComponent(" 딸

기 ","strawberry.gif");15. ListItemComponent item4 = new ListItemComponent(" 사

과 ","apple.gif");16. ListItemComponent item5 = new ListItemComponent(" 포

도 ","grape.gif");

17. //list.controlNumber(false);18. list.addComponent(item1);19. list.addComponent(item2);20. list.addComponent(item3);21. list.addComponent(item4);22. list.addComponent(item5);23. 24.

Page 29: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 29

25. list.setActionListener(this, null);26. list.setChangeListener(this, null);27. shell.addComponent(list);28. shell.show();29. }30. protected void pauseApp(){31. }

32. protected void resumeApp(){33. }

34. protected void destroyApp(boolean b){35. }

36. public void action(Component c, Object o){37. int index = list.getSelectedIndex();38. String title = list.getString(index) + " 을 선택했습니다 .";39. shell.setTitle(title);40. }41. public void changed(Component c, Object o){42. int index = list.getSelectedIndex();43. String title = list.getString(index) + " 을 선택했습니다 .";44. shell.setTitle(title);45. }

46. }

Page 30: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 30

Page 31: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 31

ChechboxComponent/CheckboxGroup CheckboxComponent 는 사용자가 여러 종류의 옵션을 선택하는데 많이

사용된다 . CheckboxComponent 는 체크박스나 라디오버튼 기능을 구현한 컴포넌트이다 .

체크박스로 사용할 때는 CheckboxComponent 가 하나의 객체로 독립적이어서 상호간에 간섭을 하지 않는다 .

라디오버튼으로 사용할 때는 같은 그룹 내의 CheckboxComponent 중 하나가 선택되면 다른 CheckboxComponent 들은 선택되지 않는 상태가 된다 .

CheckboxGroup 으로 묶어진 CheckboxComponent 들은 라디오버튼으로 동작하게 된다 .

CheckboxComponent 주요 생성자

생성자 기능CheckboxComponent(String str, Image img)

주어진 문자열과 이미지로 CheckboxComponent 를 생성한다 .

CheckboxComponent(String str, Image img, boolean bSet)

주어진 문자열과 이미지로 CheckboxComponent 를 생성하며 , bSet 에 의해 초기상태를 결정한다 .

CheckboxComponent(String str, Image img, CheckboxGroup cb)

새로운 CheckboxComponent 를 생성한다 . 주어진 문자열과 이미지를 가지며 CheckboxGroup 에 의해 그룹핑이 된다 .

Page 32: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 32

CheckboxComponent 주요 메소드

메소드 기능boolean getState() CheckboxComponent 의 선택 여부를 가져온다 .

boolean keyNotify(int type, int key)

키 입력을 받으면 호출된다 .

paintContent(Graphics g) 내부를 그린다 .

setChangeListener(ChangeListener listener, Object obj)

CheckboxComponent 의 선택상태를 변경한다 .

void setState(boolean bState) CheckboxComponent 의 선택상태를 변경한다 .

CheckboxGroup 을 만들기 위한 생성자

CheckboxGroup group = new CheckboxGroup();

Page 33: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 33

CheckboxGroup 주요 메소드

메소드 기능CheckboxComponent getSelectedCheckbox()

이 CheckboxGroup 에 등록된 Checkbox 중 현재 ON 상태인 CheckboxComponent 를 구한다 .

void select(CheckboxComponent cb) CheckboxGroup 로 묶여 있는 CheckboxComponent 중에 주어진 컴포넌트를 ON 상태로 한다 .

void setChangeListener(ChangeListener listener, Object obj)

CheckboxGroup 에 ChangedListener 를 등록한다 .

CheckboxTest.java1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class CheckboxTest extends Jlet{4. 5. ShellComponent shell;6. FormComponent form1;7. FormComponent form2;8. FormComponent form3;

9. CheckboxComponent checkbox1;10. CheckboxComponent checkbox2;11. CheckboxComponent checkbox3;12. CheckboxComponent checkbox4;

Page 34: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 34

13. LabelComponent label1;14. LabelComponent label2;

15. CheckboxGroup group;

16. protected void startApp(String args[]) {

17. shell = new ShellComponent();18. shell.setTitle(" 체크박스테스트 ");19. group = new CheckboxGroup();

20. label1 = new LabelComponent(" 체크박스 타입 ");21. checkbox1 = new CheckboxComponent(" 한국 ",null); 22. checkbox2 = new CheckboxComponent(" 영국 ",null,true); 23.24. form1 = new FormComponent();25. form1.addComponent(label1);26. form1.addComponent(checkbox1);27. form1.addComponent(checkbox2);

28. label2 = new LabelComponent(" 라디오버튼 타입 ");29. checkbox3 = new CheckboxComponent(" 서울 ",null,group); 30. checkbox4 = new CheckboxComponent("런던 ",null,group); 31. checkbox4.setState(true);32.33. form2 = new FormComponent();34. form2.addComponent(label2);35. form2.addComponent(checkbox3);36. form2.addComponent(checkbox4);

37. form3 = new FormComponent();;38. form3.addComponent(form1);39. form3.addComponent(form2);

Page 35: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 35

40. shell.addComponent(form3);41. shell.show();42. }43. protected void pauseApp(){44. }

45. protected void resumeApp(){46. }

47. protected void destroyApp(boolean b){48. }

49. }

Page 36: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 36

ComboComponent

ComboComponent 는 여러 개의 항목을 나열하고 사용자로 하여금 항목을 선택하게 만드는 컴포넌트이다 . ( 팝업메뉴 기능 제공 )

ComboComponent 는 선택된 단 하나의 항목만 보여주다가 select 키를 누르면 팝업메뉴 형태로 선택할 수 있는 리스트 항목들을 보여준다 .

ComboComponent 생성자ComboComponent combo = new ComboComponent();

ComboComponent 주요 메소드

메소드 기능int append(String str) 주어진 문자열로 팝업메뉴의 새로운 항목을 생성하여

팝업메뉴 리스트의 맨 아래 위치에 추가한다 .

void delete(int index) 팝업메뉴 리스트의 주어진 index 위치에 있는 항목을 삭제한다 .

int getPreferredHeight() 컴포넌트의 적절한 높이를 결정한다 .

int getPreferredHeight(int w)

컴포넌트의 적절한 높이를 결정한다 .

int getPreferredWidth() 컴포넌트의 적절한 폭을 결정한다 .

Page 37: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 37

int getSelectedIndex() 팝업메뉴 리스트의 항목들 중 선택되어 있는 항목의 인덱스 위치를 구한다 .

int getSize() ComboComponent 의 팝업메뉴 리스트 항목들의 개수를 구한다 .

String getString() 현재 선택된 항목의 문자열을 구한다 .

int insert(int index, String str)

주어진 index 위치에 주어진 문자열로 팝업메뉴의 새로운 항목을 생성하여 팝업메뉴 리스트에 추가한다 .

void paintContent(Graphics g)

내부를 칠한다 .

void select(int index) 팝업메뉴 리스트에서 주어진 index 의 항목을 선택한다 .

void set(int index, String str) 주어진 index 위치에 주어진 문자열로 팝업메뉴 항목을 생성하여 새로 지정한다 .

void setChangeListener(ChangeListener listener, Object obj)

ComboComponent 에서 팝업메뉴 리스트의 항목들 중 선택된 항목이 변경된 경우 , 변경상태를 감시할 ChangedListener 를 설정한다 .

Page 38: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 38

ComboTest.java

1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class ComboTest extends Jlet{4. 5. ShellComponent shell;6. ComboComponent combo;7. FormComponent form;

8. protected void startApp(String args[]) {

9. shell = new ShellComponent();10. shell.setTitle("콤보박스 테스트 ");11. form = new FormComponent();12. combo = new ComboComponent();

13. String[] list = {" 하나 ", "둘 ", "셋 ", "넷 "," 다섯 "," 여섯 "," 일곱 "," 여덟 "," 아홉 "," 열 "," 열하나 "};

14. for(int index=0;index < list.length;index++){15. combo.append(list[index]);16. }17. combo.select(0);18. form.addComponent(combo);19. shell.addComponent(form);20. shell.show();21. }

Page 39: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 39

22. protected void pauseApp(){23. }24. protected void resumeApp(){25. }26. protected void destroyApp(boolean b){27. }28. }

Page 40: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 40

TextBoxComponent

TextBoxComponent 는 사용자가 문자를 입력하고 편집하기 위해 사용되는 컴포넌트이다 .

TextBoxComponent 계층도

java.lang.Object

org.kwis.msp.lwc.Component

org.kwis.msp.lwc.TextComponent

org.kwis.msp.lwc.TextBoxComponent

생성자 기능TextBoxComponent(String data, int constraints)

주어진 문자열과 입력 제한자로 TextBoxComponent 를 생성힌다 .

TextBoxComponent(String data, int constraints, int h)

주어진 문자열과 입력 제한자 , 컴포넌트 높이값으로 TextBoxComponent 를 생성힌다 .

TextBoxComponent 생성자

Page 41: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 41

입력 제한자 기능static final int CONSTRAINT_ANY 사용자가 입력 가능한 문자에 제한이 없는 경우에

사용되는 입력 제한자CONSTRAINT_ANY 에 할당된 값은 ‘ 0’

static final int CONSTRAINT_NUMBER

사용자가 입력 가능한 문자를 ‘ ‘와 ‘ -’, 숫자로만 제한할 경우에 사용하는 입력 제한자CONSTRAINT_NUMBER 에 할당된 값은 ‘ 1’

static final int CONSTRAINT_PASSWORD

사용자가 입력 가능한 문자를 패스워드로 제한할 경우에 사용되는 입력 제한자CONSTRAINT_PASSWORD 에 할당된 값은 ‘ 2’

static final int CONSTRAINT_EMAILADDRESS

사용자가 입력 가능한 문자를 이 메일 주소로 제한할 경우 사용하는 입력 제한자CONSTRAINT_EMAILADDRESS 에 할당된 값은 ‘ 3’

static final int CONSTRAINT_URL 사용자가 입력 가능한 문자를 URL 로 제한할 경우에 사용하는 입력 제한자CONSTRAINT_URL 에 할당된 값은 ‘ 4’

TextBoxComponent 입력 제한자

Page 42: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 42

메소드 기능void configure(int x, int y, int w, int h, int mask)

컴포넌트의 위치나 크기를 변경한다 .

void delete(int index, int len) 현재 화면에 보이고 있는 문자 데이터의 index 위치에서부터 len 길이 만큼 데이터를 삭제한다 .

void focusNotify(boolean b) 포커스를 받게 되면 불려진다 .

void insert(char[] data, int offset, int len, int index)

현재 화면에 출력된 문자 데이터에서 인자로 주어진 문자 데이터를 index 위치에 추가한다 .

boolean keyNotify(int type, int key)

키 입력을 받으면 호출된다 .

void setFont(Font f) 폰트를 지정한다 .

void setMaxLength(int maxLen) 입력 가능한 최대 문자 수를 지정한다 .

void setString(String data) 문자 데이터를 지정한다 .

TextBoxComponent 주요 메소드

Page 43: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 43

textBoxText.java

1. import org.kwis.msp.lcdui.*;2. import org.kwis.msp.lwc.*;

3. public class TextBoxTest extends Jlet implements ActionListener{4. ShellComponent shell;5. TextBoxComponent textbox;6. FormComponent form;7. ButtonComponent button;

8. protected void startApp(String args[]) {9. shell = new ShellComponent();10. form = new FormComponent();11. textbox = new TextBoxComponent("",TextComponent.CONSTRAINT_ANY);12. form.addComponent(textbox);

13. button = new ButtonComponent(" 확인 ", null);14. button.setActionListener(this,button);15. shell.setCommand(button,false);

16. shell.addComponent(form);17. shell.setTitle(" 문자열바이트수 ?");18. shell.show();19. }

Page 44: 5. High level GUI Programming (1) J2SE 에서  GUI  프로그래밍 AWT 와  Swing  패키지 사용

High level GUI Programming (1) 44

20. protected void pauseApp(){21. }

22. protected void resumeApp(){23. }

24. protected void destroyApp(boolean b){25. }

26. public void action(Component cmp, Object o){27. byte[] len = textbox.getString().getBytes();28. int intVal = len.length;29. shell.setTitle(" 문자열바이트수 ? " + intVal);30. }31. }