Please Enable JavaScript!
Gon[ Enable JavaScript ]

자바(Java) AWT – TextField 컨트롤 이용하는 방법과 예제

자바(JAVA)
반응형

자바(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) AWT – TextField 컨트롤 이용하는 방법과 예제

 

반응형
Posted by 녹두장군1
,