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번 버튼

이런 식으로 각 필드가 배치된다. 따라서 여러분이 순서를 달리하면 그 위치가 바뀌니 궁금하면 순서를 바꾸어서 실행해보기 바란다. 필자의 설명은 여기서 끝내겠다. 우리가 저번에 배운 액션 리스너와 이벤트를 이용해서 아이디와 암호를 입력하면 축하메세지나 감사메세지등 다채로운 반응이 나오는 프로그램을 한번 만들어보는 것도 괜찮을 것이다. 예제를 응용해 보면서 조금더 힘을 내기 바란다.^^

댓글 1개:

  1. 안녕하세요.
    연재하시는 강좌를 잘 보고 있습니다.

    거의 매일 올려주시던 강좌가 7월 10일이후에는 새로 업데이트가 되고 있지 않네요.

    이후 강좌도 볼수 있었으면 좋겠네요.

    답글삭제