자바를 처음 시작한다는 가정하에 사소한 것부터 하나하나 짚고 넘어가며 따라하기 쉽도록
예제를 중심으로 모든 설명이 사용자의 관점에서 자세하게 기술되어 있는것이 특징입니다.
"강이"의 자바 강좌는 본 블로그(alecture.blogspot.com)와 제휴를 통해
독점적으로 공급될 예정이며 내용의 수정은 공급자의 제한으로 불가하고
사이트 출처를 밝히는데 한해 어디서나 자유롭게 쓸수있도록 합의하였음을 알립니다.
2011년 7월 10일 일요일
스윙으로 패스워드필드 만들기(JPasswordField)
자바의 스윙으로 암호필드를 만들어보겠다. 암호공간은 뭔가 스펠을 쳤을 경우 * 이런 기호같은걸로 표시되어 가려져야하는데 자바에서 준비된 JPasswordField 클래스를 사용하여 패스워드 필드를 만들면 자동으로 암호상자내에서는 여러분의 암호를 비밀(?)리에 보호해주는 장치가 들어있으니 따로 할것은 없다.*
오늘 만들어볼 스윙은 로그인시 나오는 일반적인 창을 만들어 볼것인데 만드는 것보다 어떻게 이런 요소들을 쉽게 배치하는게 가능한지에 대해 알아보는 것에 주안점을 두고 공부할 것이다. 무슨 말인지는 예제를 보면 알게된다. 아래를 보자.^^
저번에 배웠던 텍스트필드도 나오니 굉장히 친근할 것이다. 패스워드 필드도 보는바와 같이 별거 없다. 그냥 JPasswordField 클래스를 적절하게 이용하면 그만이다. 여러분이 보통 어려워하는 부분이 바로 그 밑의 단락이다. GridLayout이라는 생성자를 호출하였는데 (2,2)가 뭔지 이게 하는 기능은 무엇인지 감이 잘 안올것이다. 그게 다 영어(?)가 부족해서 그럴것이다. 일단 grid라는 뜻이 뭘까? 격자무늬나 판을 얘기하는데 옛날 창호지로 붙인 방문짝을 생각하면 쉬울려나? 아니다 요즘 세대에서는 네비에 논과 밭을 가로 세로 줄 쫘악 그려서 표시하는 지도를 생각하면 더 쉬울지도 모르겠다.^^ 하여간 이런거고 레이아웃은 배치라는 뜻이니 격자무늬로 배치하는데 (2,2)의 형태로 하라는 뜻이다. 여기서 괄호안의 첫번째 공간은 row 옆으로 늘어서있는 줄을 말하고 column은 세로로 늘어서있는 줄을 말한다. 매트릭스(matrix) 개념을 안다면 이를 떠올리면 될 것이다. 아래 그림을 보면서 예제와 연관시켜 보기로 하자.
위의 GridLayout(3,2)를 쓰고 그림의 각 공간에 버튼을 순서대로 넣으면 위의 숫자 버튼 그림과 같이 만들어진다. 필자가 이런 예를 보여주는 이유는 GridLayout을 쓰고 나서 add할시 순서가 중요하다는 것을 전달하기 위함이다.
다시 우리가 공부하던 본 예제로 돌아가서 방금 배운 예와 비교하면
frame.setLayout(new GridLayout(2,2));
frame.add(label1); //1번 버튼
frame.add(id); //2번 버튼
frame.add(label2); //3번 버튼
frame.add(password); //4번 버튼
이런 식으로 각 필드가 배치된다. 따라서 여러분이 순서를 달리하면 그 위치가 바뀌니 궁금하면 순서를 바꾸어서 실행해보기 바란다. 필자의 설명은 여기서 끝내겠다. 우리가 저번에 배운 액션 리스너와 이벤트를 이용해서 아이디와 암호를 입력하면 축하메세지나 감사메세지등 다채로운 반응이 나오는 프로그램을 한번 만들어보는 것도 괜찮을 것이다. 예제를 응용해 보면서 조금더 힘을 내기 바란다.^^
2011년 7월 9일 토요일
스윙으로 텍스트필드 만들기(JTextField)
자바의 스윙을 이용해 텍스트 필드를 만들어 보겠다. 말그대로 글자를 쓸수 있는 공간을 만들어볼텐데 약간의 게임적인 요소들(?)을 가미해서 진행해 보겠다. 오늘 예제는 엔터를 치면 위치가 이동하면서 엔터를 몇번 치는지 횟수를 카운트하는 자바 소스를 준비하였다. 스윙 프로그램에서 유저가 액션을 취하면 반응하는 예제는 버튼을 공부하는 시간에 배워보았었는데 소스가 복잡해져 기본 원리를 깨우치는데 힘들어할까봐 그동안 특별한 액션(?)을 취하지 않았지만 강이의 자바강좌를 꾸준히 공부해온 여러분들은 이제 어느 정도의 액션은 받아들일수 있을 것이라 보고 오늘은 필자의 현란한 액션(?)을 가미한 예제를 공부해 보기로 하겠다. 여기서 말하는 액션이란 액션 리스너와 액션 이벤트를 칭한다.^^ 자 준비되었으면 액션~ ㅎㅎ
엔터를 1번 치셨습니다.
엔터를 2번 치셨습니다.
..
...
본 예제는 엔터를 누를때마다 텍스트필드에 있는 기존 문자열의 위치가 바뀌면서 위처럼 엔터를 몇번 치는지 카운트하도록 간단한 기능을 넣어보았다. 그럼 예제를 살펴보기로 하자.
오래간만에 예제가 길어보인다.^^ 흡족한가? ㅎㅎ 텍스트 필드는 처음 들어가니 부담감이 있겠지만 필자의 주옥같은 설명을 곁들이면 별것 아니라는 생각이 들기 시작할 것이다.^^ 그럼 소스 분석을 시작해 보겠다. 클래스에서 보면 변수가 있고 count( ) 메소드가 있는데 나중에 유저가 텍스트 필드에 뭔가 액션(예제에서는 엔터를 칠 경우)을 취하면 몇번 치는지 숫자 세어보라고 만들어 놓은 것이니 너무 이곳에 집중하지 말기 바란다. 자 그럼 메인메소드로 들어가서 보면 처음 시작이야 지겹도록 보여줬으니 이제 저절로 건너뛰어질 것이다.ㅎㅎ
오늘의 중심인 텍스트 필드를 구현하려고 JTextField 클래스를 동원한 객체생성 문구가 나오기 시작한다. 문자열 옆에 20 이라는 숫자는 텍스트 필드 사이즈를 써놓는 공간이다. 그리고 setHorizontalAlignment( ) 메소드는 글자 위치를 어디에 놓을지 정할때 쓰는 표현인데 여기서는 중앙에 놓기위해 JTextField.CENTER 라고 써놓았다. 예전에 레이블에서 배웠던거랑 별로 다를게 없다. 액션 리스너를 이용해서 유저가 엔터를 칠경우 텍스트 필드에 적혀있는 글자들을 좌우중앙으로 이동하면서 즉 처음에는 중앙으로 맞추어 놓았으니 그에 해당하는 두번째 if문이 수행되면서 밑에 있는 프린트문이 수행될 것이고 그 다음에 또 엔터를 치면 이에 해당하는 첫번째 if문이 수행되면서 밑에 있는 프린트문이 출력된다. 이런식으로 계속 반복되는 프로그램이다. 어려울건 없으니 직접 생각하고 실행해보면서 오늘도 마무리 잘하기 바란다.^^
피드 구독하기:
글 (Atom)









