2014년 9월 11일 목요일

JavaFX UI - 3.Radio Button

Radio button 컨트롤은 선택되거나 해제될 수 있다. 일반적으로 radio button들은 하나의 그룹으로 묶이며, 어느 순간에 오직 하나의 버튼만이 선택될 수 있다. 이러한 작동 방식은 일반 toggle button들과의 다른 점이다.




1. Creating a Radio Button

RadioButton 클래스는 두 가지 생성자를 제공한다. 파라미터가 없는 생성자와 버튼의 텍스트를 파라미터로 받는 생성자가 있다.

Example 3-1 Creating Radio Buttons




setSelected 메서드를 통해 radio button의 선택 상태를 명시적으로 지정할 수 있다. 또한 isSelected 메서드를 통해 현재 선택 상태를 알아볼 수도 있다.
RadioButton 클래스는 Labeled 클래스를 상속하였으므로, 여기에는 텍스트 뿐만 아니라 이미지도 지정할 수 있다. setGraphic 메서드를 통해 원하는 이미지를 지정할 수 있다.

Example 3-2 Creating a Graphical Radio Button



2. Adding Radio Buttons to Groups

일반적으로 Radio button들은 상호배타적인 옵션을 제공하기 위하여 하나의 그룹에 묶여서 사용된다. ToggleGroup 객체는 자기에게 속한 모든 radio button들이 상호배타적으로 선택될 수 있도록 관리해준다.

Example 3-3 Creating a Group of Radio Buttons



 위 radio button들을 layout 컨테이너에 배치하여 어플리케이션 컨텐트로 추가하면, 결과 화면은 아래와 같다.



3. Processing Events for Radio Buttons

그룹 내의 radio button 중 하나가 선택되었을 때, 일반적으로 어플리케이션은 어떤 액션을 수행한다.

Example 3-4 Processing Action for Radio Buttons



위 예제에서 람다 표현식으로 구현된 ChangeListener<Toggle> 객체는 getSelectedToggle 메서드를 사용하여 현재 선택된 radio button을 얻어서 그에 해당하는 이미지를 설정한다.


4. Requesting Focus for a Radio Button

 그룹 내의 radio button들 중 첫 번째 button이 디폴트 포커스를 가진다. 만약 setSelected 메서드를 통해 두 번째 radio button을 선택하였다면, 아래와 같이 두 번째 button이 선택되지만 포커스는 여전히 첫 번째 button이 가질 것이다.

만약 포커스의 위치를 바꾸고 싶다면 requestFocut 메서드를 사용한다.

Example 3-5 Requesting Focus for the Second Radio Button



위 코드가 적용되면 아래와 같은 모습이 된다.




댓글 없음:

댓글 쓰기