javaFX学习之RadioButton的使用(转载)

  • Post author:
  • Post category:java



创建一个Radio Button



RadioButton类位于JavaFX SDK的 javafx.scene.control 包中,它提供了两个构造方法来创建其实例。例中展示了两个RadioButton。rb1是由无参构造方法创建。这个Radio Button 的文字说明(text

caption)是通过setText方法设置的。rb2的文字说明则是通过对应的构造方法定义的。
















创建Radio Button








1










2










3










4










5










6










7










8










//标签为空的Radio Button








RadioButton


rb1


=


new


RadioButton


(


)


;














//设置标签文字








rb1


.


setText


(


“Home”


)


;














//指定标签文字的Radio Button








RadioButton


rb2


=


new


RadioButton


(


“Calendar”


)


;




你可以通过调用setSelected方法并指定参数值为true来明确选中一个Radio Button。如果你需要检查某个Radio Button是否被用户选中,可以使用isSelected方法



因为RadioButton类是Labeled类的一个扩展,所以你不仅可以指定文字描述,还可以指定一个图像。你可以使用setGraphic方法来指定一个图像。例展示了如何在你的应用程序中实现一个带图像的Radio Button




创建一个带图像的Radio Button







1










2










3









Image


image


=


new


Image


(


getClass


(


)


.


getResourceAsStream


(


“ok.jpg”


)


)


;








RadioButton


rb


=


new


RadioButton


(


“Agree”


)


;








rb


.


setGraphic


(


new


ImageView


(


image


)


)


;





添加Radio Button到Group



Radio Button通常用于呈现一个组中几个相互排斥的选项





ToggleGroup 对象提供与之关联的Radio Button的引用并管理它们(将几个关联的RadioButton对象圈在一个应用组里





使得组内同时只有一个Radio Button对象能被选中)





例创建了一个ToggleGroup对象,和三个Radio Button对象,将所有RadioButton对象都添加到了ToggleGroup中,并且指定了哪个RadioButton对象在程序启动时会被选默认中。










创建一组Radio Button








1










2










3










4










5










6










7










8










9










10










11









final


ToggleGroup


group


=


new


ToggleGroup


(


)


;














RadioButton


rb1


=


new


RadioButton


(


“Home”


)


;








rb1


.


setToggleGroup


(


group


)


;








rb1


.


setSelected


(


true


)


;














RadioButton


rb2


=


new


RadioButton


(


“Calendar”


)


;








rb2


.


setToggleGroup


(


group


)


;














RadioButton


rb3


=


new


RadioButton


(


“Contacts”


)


;








rb3


.


setToggleGroup


(


group


)


;





当这些RadioButton对象通过容器布局展现并添加到应用程序中后,运行效果如图所示





三个 RadioButton对象组合在一个ToggleGroup组中


3-4-2 radio-buttons-group


处理Radio Button事件



通常,在组中的某个Radio Button被选中时,应用程序会执行一个动作。查看例来学习如何根据某个RadioButton对象的选中来更换图标




处理Radio Button动作事件







1










2










3










4










5










6










7










8










9










10










11










12










13










14










15










16










17










18










19









ImageView


image


=


new


ImageView


(


)


;














rb1


.


setUserData


(


“Home”


)








rb2


.


setUserData


(


“Calendar”


)


;








rb3


.


setUserData


(


“Contacts”


)


;














final


ToggleGroup


group


=


new


ToggleGroup


(


)


;














group


.


selectedToggleProperty


(


)


.


addListener


(








(


ObservableValue


<


?


extends


Toggle


>


ov


,


Toggle


old_Toggle


,








Toggle


new_Toggle


)


->


{









if


(


group


.


getSelectedToggle


(


)


!=


null


)


{









final


Image


image


=


new


Image


(








getClass


(


)


.


getResourceAsStream


(








group


.


getSelectedToggle


(


)


.


getUserData


(


)


.


toString


(


)


+








“.jpg”


)


)


;








icon


.


setImage


(


image


)


;








}








}


)


;




用户数据(User Data)被指定给了每个Radio Button。ChangeListener<Toggle>对象会检测Group中被选中的开关按钮。然后使用Group的getSelectedToggle方法得到当前选中的Radio Button,并通过调用getUserData方法提取User Data。然后User Data被用来构造成一个图像文件名来加载图像

当rb3被选中时,getSelectedToggle方法会返回rb3的引用,而getUserData方法会返回“Contacts”。因此getResourceAsStream 方法会收到值为“Contacts.jpg” 的字符串作为参数。运行应用程序效果如图

为Radio Button请求焦点

在一组Radio Button中,默认情况下第一个Radio Button会最先获得焦点。如果你在第二个Radio Button上调用setSelected方法,其预期结果如图





默认焦点设置




3-4-3 radio-button-focus1

在图中第二个Radio Button被选中了,但第一个Radio Button依然保持着焦点。你可以使用requestFocus方法来更改焦点




为第二个Radio Button请求焦点







1










2










rb2


.


setSelected


(


true


)


;








rb2


.


requestFocus


(


)


;



代码生效后的运行效果如图




为选中的Radio Button 设置焦点



3-4-4 radio-button-focus2