2014년 9월 15일 월요일

JavaFX UI - 7.Text Field


TextField 클래스는 사용자로부터 텍스트를 입력받고 표시하기 위한 UI 컨트롤이다.

아래 화면은 라벨과 함께 배치된 전형적인 text field의 모습이다.


 
 
1. Creating a Text Field

아래
예제는 label과 함께 text field를 생성하는 코드이다.

Example 7-1 Creating a Text Field


위 예제에서와 같이 비어있는 text field를 생성하거나, 특정 텍스트를 가진 text field를 생성할 수 있다.
Text field의 크기를 지정하기 위하여 setPrefColumnCount 메서드를 사용할 수 있으며, 이는 text field에서 보여질 수 있는 최대 문자 수를 지정한다.


2. Building the UI with Text Fields

아래
화면은 세 개의 text field를 표시하고 그 text field들을 통해 사용자가 입력한 데이터를 처리하는 예시이다.



아래 예제는 세 개의 text field와 두 개의 button을 생성하고, 이 컨트롤들을 GridPane 컨테이너를 통해 application의 scene에 추가한다. GridPane 컨테이너는 UI 컨트롤들을 유연하게 배치하기에 편리하다.

Example 7-2 Adding Text Fields to the Application


위 예제에서는 세 개의 text field들이 각각에 해당하는 label을 가지지 않고 그 대신 prompt text를 통해 해당 필드에 무엇을 입력해야할 지 사용자에게 알려준다.

아래 화면은 prompt text를 가진 text field의 예시이다.



Text field에 입력된 텍스트와 달리, prompt text는 getText 메서드를 통해 반환되지 않는다.


3. Processing Text Field Data
 
Example 7-3 Defining Actions for the Submit and Clear Buttons



GridPane에 추가된 Label 컨트롤은 사용자에게 메시지를 표시해준다. 사용자가 submit 버튼을 눌렀을 때 setOnAction 메서드를 통해 추가된 이벤트 핸들링 코드가 실행된다. comment 텍스트 필드의 값을 점검하여 입력된 값이 있다면 감사메시지를 표시한다.

아래 화면은 사용자가 comment에 아무것도 입력하지 않았을 때의 모습이다.



사용자가 clear 버튼을 클릭했을 때, 세 개의 텍스트 필드 내용이 모두 지워진다.

TextField는 다음과 같은 유용한 메서드들을 제공한다.
  • copy() : TextField 내에서 선택된 범위의 텍스트 내용을 클립보드로 복사한다.
  • cut() : TextField 내에서 선택된 범위의 텍스트 내용을 잘라내어 클립보드로 복사한다.
  • paste() : 클립보드에 있는 내용을 TextField 내의 선택된 범위로 붙여넣는다.

댓글 1개: