JAVA/JAVA 연습
HashMap과 액션리스너를 이용하여 로그인창 만들기
오늘의 진
2022. 8. 6. 14:07
해쉬맵 안에 비밀번호와 아이디 값을 담는다.
여기서 주의할 점은 for문을 이용하여 값을 put해주려고 했는데 class 자체에서는 안된다 !
메소드 안에서for문을 작성해주어야 함
HashMap을 이용한 이유 : Map의 키는 중복값을 허용하지 않음. 즉 id도 중복되지 않게 작성 가능.
핸들러 방식으로 작성하여주었다.
package ja08;
import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.HashMap;
import java.util.Iterator;
public class Login extends Frame {
HashMap map = new HashMap();
String[] id = { "aaaa", "abcd", "take", "love" };
String[] pw = { "1234", "a123", "7777", "vovo" };
// 화면구성
Label lid, lpw;
TextField tid, tpw;
Button ok;
public Login() {
super("Login Test");
for (int i = 0; i < id.length; i++) {
map.put(id[i], pw[i]);
}
lid = new Label("ID", Label.RIGHT);
lpw = new Label("PASSWORD", Label.RIGHT);
ok = new Button("ok");
tid = new TextField(10);
tpw = new TextField(10);
setLayout(new FlowLayout());
// 이벤트 달기
tid.addActionListener(new Handeler());
tpw.addActionListener(new Handeler());
add(lid);
add(tid);
add(lpw);
add(tpw);
add(ok);
setSize(450, 800);
setVisible(true);
}
class Handeler implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String id = tid.getText();
String pw = tpw.getText();
if (!map.containsKey(id)) {
System.out.println("존재하지 않는 ID입니다.");
tid.requestFocus();
tid.selectAll();
} else if (!(map.get(id).equals(pw))) {
System.out.println("비밀번호가 틀렸습니다.");
tpw.requestFocus();
tpw.selectAll();
} else {
System.out.println("로그인 하였습니다.");
}
}
}
public static void main(String[] args) {
new Login();
}
}
구현모습
![]() |
![]() |