강좌 & 팁
eclipse swt에서 클릭 이벤트 알아보기
이전 강좌에서 layout 배치에 대한 기본적인 내용을 알아봤습니다.
계산기를 만들어본다고 했었는데, 숫자를 입력하고 표시하기 위해서 버튼의 클릭 이벤트에 대해서 알아보도록 하겠습니다.
1. 화면
만들 화면은 아래와 같습니다.
버튼을 2개 만들고 버튼에서 값을 입력 받을 텍스트를 생성하도록 하겠습니다.
어떻게 만들어야 할지 보이니까~ 조금은 알아보기 쉬울거 같습니다.
2. 준비
먼저, 소스 코드를 아래와 같이 준비합니다.
public static void main(String[] args) {
실행을 하면 아무 것도 없는 빈 페이지가 뜰거예요.
3. 부분 소스
위의 기본 소스를 참고해서 중간부터 코드를 입력합니다.
우리는 사전에 텍스트 와 버튼 2개를 만든다고 하였습니다.
Text text; // 버튼 입력시 내용이 들어갈 공간입니다.
그 다음, 각 객체들을 올릴 컴포지트를 먼저 생성하도록 하겠습니다. 이때 layout 는 좌우로 2등분 하여 버튼이 좌, 우 에 놓일 수 있도록 합니다.
Composite comp = new Composite(shell, SWT.NONE);
먼저, 텍스트를 하나 만들어 줍니다. SWT.BORDER 속성은 테두리를 보이게 하기 위해 넣었습니다. 그리고 가로로 길게 보이게 하기 위해서 FILL_HORIZONTAL 로 지정하였습니다.
text = new Text(comp, SWT.BORDER);
그리고 텍스트 처럼 버튼을 만들어 줍니다. 버튼은 당연히 누를 수 있도록 SWT.PUSH 속성을 가져야 하고,
btn1 = new Button(comp, SWT.PUSH);
그 다음, 실행을 해봅니다.
... 저희가 원하는 모습이 나오지 않았습니다.
4. 영역 합치기
우리가 컴포지트를 생성할 때, 영역을 2개로 분리했다는 것을 기억해야합니다.
Composite comp = new Composite(shell, SWT.NONE);
처음에 '텍스트'를 만들었고, 2번째로 '버튼1'을 3번째로 '버튼2'를 만들었기 때문에 아래와 같이 배치가 됩니다.
그러면 첫 번째로 만들었던 텍스트 영역이 2군데 모두 차지할 수 있도록 변경을 해줘야합니다.
수정 전 text 생성 부분 입니다. text = new Text(comp, SWT.BORDER);
아래는 변경 후 달라진 코드입니다.
text = new Text(comp, SWT.BORDER);
text 의 레이아웃을 정하는 Griddata를 위로 뺀 후에, Griddata 속성중 가로로 합치는 horizontalSpan을 사용하였습니다. horizontalSpan = 2 는 2개로 나뉜 영역을 1개로 합쳐줍니다.
5. 전체 소스
실행을 하면 원래 생각했던대로 모습이 나왔습니다.
아래는 전체 코드 입니다.
public static void main(String[] args) {
6. 버튼 클릭 이벤트
버튼 클릭이벤트를 하기 위해 시간을 소비한거 같네요 ;ㅁ;
위의 코드에 이어서 진행을 하도록 하겠습니다.
버튼에 이벤트를 주는 속성은 여러 가지 있지만, 여기서는 클릭을 했을 때 발생하는 이벤트를 할 예정입니다. 기본적으로 주어지는 리스너 중 Selection Listener를 사용할 것 입니다.
btn1 에 add를 누르고 자동 완성 기능(Ctrl + Space)을 눌러줍니다. 거기서 addListener를 찾아서 등록해줍니다.
그러면 아래와 같은 코드가 생겨납니다.
btn1.addListener(eventType, listener)
eventType 에는 선택 되었을 때, 반응이 되어야 하니 Selection 을 넣어줍니다.
btn1.addListener(SWT.Selection, listener)
listener 부분을 지운 다음에 new를 해주고 자동 완성 기능(Ctrl + Space)을 눌러주면 Listener()를 추가할 수 있습니다.
완성된 부분은 아래와 같습니다.
btn1.addListener(SWT.Selection, new Listener() {
이제 버튼을 눌렀을 때, 어떤 액션을 취할지 코드를 넣어줘야 합니다.
text에 숫자 '1'을 입력해보도록 하겠습니다.
btn1.addListener(SWT.Selection, new Listener() {
위와 같이 적용 후에, 컴파일 해서 실행을 해봅니다.
그럼 아래 그림과 같이 버튼을 눌렀을 때, 숫자 1이 출력됩니다.
같은 방법으로 btn2를 추가해보록 연습해보세요~ ㅋ
권한
강좌에 대한 내용은 에프에이리눅스(주) 에 권한이 있습니다. |