(翻译)第十二回 JavaFX2.0 复选框CheckBox
2011-11-02 00:29
405 查看
原文地址http://download.oracle.com/javafx/2.0/ui_controls/checkbox.htm
Figure 6-1 是有三个复选框的一个应用,这些复选框用来控制工具栏中的图标是否显示。
Figure 6-1 Checkbox Sample
Description of "Figure 6-1 Checkbox Sample"
Example 6-1 creates two simple checkboxes.
Java代码
//Example 6-1 Creating Checkboxes
//A checkbox without a caption
CheckBox cb1 = new CheckBox();
//A checkbox with a string caption
CheckBox cb2 = new CheckBox("Second");
cb1.setText("First");
cb1.setSelected(true);
创建复选框后,就可以使用JavaFX API中的方法对它们进行设置。在Example 6-1 中
复选框能被定义为明确或不明确。被定义为明确后就可以被选中或取消选中,但是不明确的话就不能被选中或取消选中。结合使用CheckBox类的
6-1 是三个不同状态的复选框,它们的
Table 6-1 States of a Checkbox
当复选框要呈现多种状态的UI元素时要为它们指定三种状态,如"Yes", "No", "Not Applicable"。CheckBox 类的
Example 6-2 中的代码块创建了三个复选框,这样当一个复选框被选中后,相应的图标就显示出来。
Java代码
//Example 6-2 Setting the Behavior for the Checkboxes
final String[] names = new String[]{"Security", "Project", "Chart"};
final Image[] images = new Image[names.length];
final ImageView[] icons = new ImageView[names.length];
final CheckBox[] cbs = new CheckBox[names.length];
for (int i = 0; i < names.length; i++)
{ final Image image = images[i] =
new Image(getClass().getResourceAsStream(names[i] + ".png"));
final ImageView icon = icons[i] = new ImageView();
final CheckBox cb = cbs[i] = new CheckBox(names[i]);
cb.selectedProperty().addListener
(new ChangeListener<Boolean>() {
public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val)
{ icon.setImage(new_val ? image : null);
} });
}
Figure 6-2 是应用中的 Security 和Chart 复选框被选中,Project 取消选中。
Figure 6-2 Checkbox Application in Action
Description of "Figure 6-2 Checkbox Application in Action"
Figure 6-2 中的复选框有CheckBox 类 默认的外观和感觉。可以通过使用
6-3 .
Java代码
//Example 6-3 Styling a Checkbox
cb1.setStyle( "-fx-border-color: lightblue; "
+ "-fx-font-size: 20;"
+ "-fx-border-insets: -5; "
+ "-fx-border-radius: 5;"
+ "-fx-border-style: dotted;"
+ "-fx-border-width: 2;" );
新风格包括了一条浅蓝色点边框和一个扩大字体的标题。Figure 6-3 是使用了这种风格的 cb1复选框。
Figure 6-3 Styled Checkbox
Description of "Figure 6-3 Styled Checkbox"
要为应用中的所有复选框设置特定的风格,按照下面的步骤:
创建一个 .css文件;
在 .css文件中创建
在
在你的JavaFX应用中,使用
CheckBox类让你可以在应用中创建复选框。尽管复选框看起来很想单选框,但是它们并不能被放置进一个开关组中来实现很多选项的选择。你可以复习一下前面关于Radio Button 和Toggle Button相关的内容。
Figure 6-1 是有三个复选框的一个应用,这些复选框用来控制工具栏中的图标是否显示。
Figure 6-1 Checkbox Sample
Description of "Figure 6-1 Checkbox Sample"
创建Checkbox
Example 6-1 creates two simple checkboxes.Java代码
//Example 6-1 Creating Checkboxes
//A checkbox without a caption
CheckBox cb1 = new CheckBox();
//A checkbox with a string caption
CheckBox cb2 = new CheckBox("Second");
cb1.setText("First");
cb1.setSelected(true);
创建复选框后,就可以使用JavaFX API中的方法对它们进行设置。在Example 6-1 中
setText方法为c1这个复选框定义了标题,设置
setSelected方法为
true以使程序运行后cb1是选中的。
定义状态
复选框能被定义为明确或不明确。被定义为明确后就可以被选中或取消选中,但是不明确的话就不能被选中或取消选中。结合使用CheckBox类的 setSelected和
setIndeterminate方法来为复选框指定状态。Table
6-1 是三个不同状态的复选框,它们的
INDETERMINATE和
SELECTED属性不相同。
Table 6-1 States of a Checkbox
Property Values | Checkbox Appearance |
---|---|
INDETERMINATE= false SELECTED= false | |
INDETERMINATE=false SELECTED= true | |
INDETERMINATE= true SELECTED= true/false |
allowIndeterminatePropety设置了复选框对象是否能在全部三种状态(选中、取消选中、不明确)中循环。如果设置
了
,这个控件就可以在三种状态中循环。否则
,这控件只能在选中和取消选中两种状态中切换。下一部分的应用中构造了三个复选框,并且只有两个状态。
设置行为
Example 6-2 中的代码块创建了三个复选框,这样当一个复选框被选中后,相应的图标就显示出来。Java代码
//Example 6-2 Setting the Behavior for the Checkboxes
final String[] names = new String[]{"Security", "Project", "Chart"};
final Image[] images = new Image[names.length];
final ImageView[] icons = new ImageView[names.length];
final CheckBox[] cbs = new CheckBox[names.length];
for (int i = 0; i < names.length; i++)
{ final Image image = images[i] =
new Image(getClass().getResourceAsStream(names[i] + ".png"));
final ImageView icon = icons[i] = new ImageView();
final CheckBox cb = cbs[i] = new CheckBox(names[i]);
cb.selectedProperty().addListener
(new ChangeListener<Boolean>() {
public void changed(ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val)
{ icon.setImage(new_val ? image : null);
} });
}
names这个数组使用了一个
for循环来创建复选框和相应的图标。比如说,cbs[0]是第一个复选框,被分配了"Security"这个标题;同时image[0]接收了"Security.png"作为
getResourceStream方法的文件名。如果一个特定的复选框被选中后,相应的图片就被分配成它的图标。如果一个复选框被取消选中,图标接收
null图片所以没有图标分配。
Figure 6-2 是应用中的 Security 和Chart 复选框被选中,Project 取消选中。
Figure 6-2 Checkbox Application in Action
Description of "Figure 6-2 Checkbox Application in Action"
美化Checkbox
Figure 6-2 中的复选框有CheckBox 类 默认的外观和感觉。可以通过使用 setStyle方法来改变它的样子,见Example
6-3 .
Java代码
//Example 6-3 Styling a Checkbox
cb1.setStyle( "-fx-border-color: lightblue; "
+ "-fx-font-size: 20;"
+ "-fx-border-insets: -5; "
+ "-fx-border-radius: 5;"
+ "-fx-border-style: dotted;"
+ "-fx-border-width: 2;" );
新风格包括了一条浅蓝色点边框和一个扩大字体的标题。Figure 6-3 是使用了这种风格的 cb1复选框。
Figure 6-3 Styled Checkbox
Description of "Figure 6-3 Styled Checkbox"
要为应用中的所有复选框设置特定的风格,按照下面的步骤:
创建一个 .css文件;
在 .css文件中创建
checkboxCSS 类。
在
checkboxCSS 类中定义所有需要的风格。
在你的JavaFX应用中,使用
setStyleClass方法来使用CSS文件。
相关文章推荐
- (翻译)第二回 安装JavaFX2.0 SDK
- (翻译)第十九回 JavaFX2.0 表格框TableView
- (翻译)第三回 JavaFX2.0在mac系统的安装
- (翻译)第二十回 JavaFX2.0 分割线Separator
- (翻译)第二十一回 JavaFX2.0 滑动条Slider
- (翻译)第五回 开始使用JavaFX2.0
- (翻译)第二十二回 JavaFX2.0 进度条和进度指示器
- (翻译)第六回 JavaFX2.0 UI 控件
- (翻译)第二十三回 JavaFX2.0 超链接Hyperlink
- (翻译)第七回 JavaFX2.0和Swing的集成
- (翻译)第二十四回 JavaFX2.0 提示条ToolTip
- 第十二回 JavaFX2.0 复选框CheckBox
- (翻译)第八回 JavaFX2.0 标签Label
- (翻译)第二十五回 JavaFX2.0 Html编辑器
- JavaFX 2.0+ 官方文档翻译和技术资料整理计划
- (翻译)第九回 JavaFX2.0按钮Button
- (翻译)第二十六回 JavaFX2.0 标题窗格TitledPane和手风琴控件Accordion
- (翻译)第十回 JavaFX2.0单选框Radio Button
- (翻译)第二十七回 JavaFX2.0 文本Text及其特效
- (翻译)第十三回 JavaFX2.0 选项框ChoiceBox