자바(Java) AWT – TextField 컨트롤 이용하는 방법과 예제 |
환경 : Eclipse Mars, Android 4.2.2 |
TextField 컨트롤은 텍스트을 입력할수 있는 컨트롤입니다. 싱글라인이며 TextField 는 클릭할 때 마다 키 이벤트를 발생시키게 됩니다. 이번 예제는 아이디 패스워드를 입력하는 창을 구현한 것입니다.
▼ TextField 를 생성하기 위해 생성자 인수로 길이 값을 넘기게 됩니다. 이것이 텍스트 필드의 크기가 되는 것이죠. 그리고 패스워드는 값을 숨겨야 하기 때문에 setEchoChar() 함수를 써서 단어가 입력될 때 ‘*’ 로 변환을 시킵니다.
Label namelabel = new Label("아이디 : ", Label.RIGHT); Label passwordLabel = new Label("패스워드 : ", Label.CENTER); final TextField userText = new TextField(6); final TextField passwordText = new TextField(6); passwordText.setEchoChar('*');
▼ 다음은 텍스트 필드에 입력된 아이디, 패스워드 값을 가져와야 합니다. 그러기 위해 버튼을 만들었는데 그 버튼에 ActionListener 객체를 등록합니다. 그리고 actionPerformed() 함수가 실행될 때 텍스트 값들을 가져오게 되는데 getText() 를 이용해 입력된 값을 추출합니다.
Button loginButton = new Button("Login"); loginButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String data = "아이디 : " + userText.getText(); data += ", 패스워드 : " + passwordText.getText(); statusLabel.setText(data); } });
▼ TextField 는 key 를 텍스트에 넣을떄 마다 이벤트를 발생시키는데 addKeyListener() 함수에 KeyListener 객체를 등록해야 합니다. KeyListener 객체에서는 다음 함수들을 구현할수 있습니다. keyTyped(), keyReleased(), keyPressed() 입니다. 단어에서 알 수 있듯이 타이핑을 했다던지 키를 눌렀을 때, 혹은 떼었을 때 이벤트 함수가 실행되게 되는 것입니다.
userText.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { //statusLabel.setText("key Typed"); } @Override public void keyReleased(KeyEvent e) { statusLabel.setText("key release"); } @Override public void keyPressed(KeyEvent e) { statusLabel.setText("key press"); } });
▼ 아래는 위의 내용을 구현한 전체 소스 입니다.
import java.awt.Button; import java.awt.FlowLayout; import java.awt.Frame; import java.awt.GridLayout; import java.awt.Label; import java.awt.Panel; import java.awt.TextField; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class AwtTextFieldControl { private Frame mainFrame; private Label headerLabel; private Label statusLabel; private Panel controlPanel, buttonPanel; public AwtTextFieldControl() { prepareGUI(); } public static void main(String[] args) { AwtTextFieldControl awtControlDemo = new AwtTextFieldControl(); awtControlDemo.showTextField(); } private void prepareGUI() { // Frame 에 대한 셋팅 mainFrame = new Frame("Java AWT 샘플"); mainFrame.setSize(400, 400); mainFrame.setLayout(new GridLayout(4, 1)); mainFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent windowEvent) { System.exit(0); } }); // 상단에 있는 라벨 headerLabel = new Label(); headerLabel.setAlignment(Label.CENTER); headerLabel.setText("Control Test : TextField"); // 하단 상태값 라벨 statusLabel = new Label(); statusLabel.setText("Status Lable"); statusLabel.setAlignment(Label.CENTER); statusLabel.setSize(350, 100); controlPanel = new Panel(); controlPanel.setLayout(new FlowLayout()); buttonPanel = new Panel(); buttonPanel.setLayout(new FlowLayout()); mainFrame.add(headerLabel); mainFrame.add(controlPanel); mainFrame.add(buttonPanel); mainFrame.add(statusLabel); mainFrame.setVisible(true); } private void showTextField() { Label namelabel = new Label("아이디 : ", Label.RIGHT); Label passwordLabel = new Label("패스워드 : ", Label.CENTER); final TextField userText = new TextField(6); final TextField passwordText = new TextField(6); passwordText.setEchoChar('*'); Button loginButton = new Button("Login"); loginButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { String data = "아이디 : " + userText.getText(); data += ", 패스워드 : " + passwordText.getText(); statusLabel.setText(data); } }); userText.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { //statusLabel.setText("key Typed"); } @Override public void keyReleased(KeyEvent e) { statusLabel.setText("key release"); } @Override public void keyPressed(KeyEvent e) { statusLabel.setText("key press"); } }); controlPanel.add(namelabel); controlPanel.add(userText); controlPanel.add(passwordLabel); controlPanel.add(passwordText); controlPanel.add(loginButton); mainFrame.setVisible(true); } }
▼ 위의 소스를 구현한 화면입니다. 텍스트 필드에 값을 넣을 때 마다 상태값에 현재 눌렀는지 떼었는지 표시가 되며 Login 버튼을 누르게 되면 아래 두개의 텍스트값을 표시하게 됩니다.
'자바(JAVA)' 카테고리의 다른 글
자바(Java) The public type [class name] must be defined in its own file 오류 (0) | 2015.04.10 |
---|---|
자바(Java) AWT – Choice 컨트롤을 사용하여 콤보박스 구현하기 (0) | 2015.01.21 |
자바(Java) AWT – Canvas 컨트롤의 간단한 사용예제 (0) | 2015.01.14 |
자바(Java) AWT – TextArea 컨트롤을 사용하는 방법 (1) | 2014.12.10 |
자바(Java) AWT – List 컨트롤 구현 방법과 예제 (0) | 2014.11.30 |
자바(Java) AWT – Checkbox 컨트롤 사용법과 예제 (4) | 2014.11.27 |
자바(Java) 웹페이지에 접속해서 html 소스 긁어 오기위한 방법 (2) | 2014.11.20 |
자바스크립트(javascript) 배열로 구성하여 input 객체에 넣고 POST 넘겼을때 (4) | 2014.09.18 |