[译]JavaFX 2.0+ - UI控件 - 按钮_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > [译]JavaFX 2.0+ - UI控件 - 按钮

[译]JavaFX 2.0+ - UI控件 - 按钮

 2014/6/20 0:12:13  alanzyy  程序员俱乐部  我要评论(0)
  • 摘要:3按钮JavaFXAPI中的Button类用来处理当用户点击一个按钮时执行一个操作。Button类继承自Labeled类,它可以显示文本,图像,或两者兼之。图3-1显示了几个不同效果的按钮,在本章中你将学习如何创建这些类型的按钮。图3-1不同类型的按钮上图中显示了五个按钮和一个标签,这些按钮分多行显示。第一行中的按钮包含一个图标和文本,图标是一个绿色的实心圆中间放置一个白色的对钩。第二行显示了两个纯文本按钮和一个标签。其中“Decline”按钮展示的是鼠标放在按钮上时的显示——边框有阴影效果
  • 标签:Java 控件

?

class="chapter">3?按钮

?

JavaFX API中的Button类用来处理当用户点击一个按钮时执行一个操作。Button类继承自Labeled类, 它可以显示文本,图像,或两者兼之。图3 - 1?显示了几个不同效果的按钮, 在本章中你将学习如何创建这些类型的按钮。

图3 - 1 不同类型的按钮

Buttons with graphical icons and text captions
上图中显示了五个按钮和一个标签,这些按钮分多行显示。 第一行中的按钮包含一个图标和文本,图标是一个绿色的实心圆中间放置一个白色的对钩。 第二行显示了两个纯文本按钮和一个标签。其中“Decline”按钮展示的是鼠标放在按钮上时的显示——边框有阴影效果。第三行包含两个纯图标按钮,没有任何文本。?

创建按钮

Button类有3个构造函数,见代码片段例3 - 1?

例3 - 1 创建一个按钮
//空按钮
Button button1 = new Button();
//指定文本的按钮
Button button2 = new Button("Accept");
//指定文本和图标的按钮
Image imageOk = new Image(getClass().getResourceAsStream("ok.png"));
Button button3 = new Button("Accept", new ImageView(imageOk));

?

因为Button类继承自Labeled类,你可以使用以下方法来指定按钮的内容:

  • setText(String text)——指定文本

  • setGraphic(Node graphic)——指定图形图标

例3 - 2?展示了如何创建一个只有图标但没有文本的按钮。

例3 - 2 添加一个图标按钮

Image imageDecline = new Image(getClass().getResourceAsStream("not.png"));
Button button5 = new Button();
button5.setGraphic(new ImageView(imageDecline));

运行这段代码,效果如图3 - 2?所示。

图3 - 2 按钮和图标

Description of Figure 3-2 follows

例3 - 2?和?图3 - 2?中,给按钮设置的图标是一个ImageView对象。 不过,你也可以使用其他图形对象。例如,位于javafx.scene.shape?包中的Shape对象。 当为按钮同时设置了文本和图形内容时,可以使用setGraphicTextGap()方法来设置它们之间的间距。

按钮的默认皮肤区分了以下几种显示状态。?图3 - 3?显示了一个带图标按钮的几种默认状态。

图3 - 3 按钮的几种状态

<a href=Three states of the button" height="74" src="/Upload/Images/2014062000/838D8C77770D6D4D.png" title="Three states of the button" width="340">

添加按钮事件

当鼠标点击按钮时,首要的功能就是响应一个事件。使用setOnAction的方法可以为按钮定义一个事件,当用户点击按钮时触发。代码片段例3 - 3?展示了为button2添加一个事件。

例3 - 3 为按钮定义事件

button2.setOnAction((ActionEvent e) -> {
    label.setText("Accepted");
});

例3 - 3?展示了如何处理一个事件(ActionEvent),这样当用户点击button2时,一个标签的文本被设置为“Accept”。

你可以为一个按钮设置尽可能多的事件处理方法,来执行特定的行为或添加视觉特效。

?

视觉特效

因为Button类继承自Node类,所以你可以为按钮添加javafx.scene.effect包下的任何特效来增强视觉效果。在代码片段例3 - 4?,?当鼠标进入button3时(onMouseEntered),为其增加了阴影效果(DropShadow)

例3 - 4 DropShadow效果

DropShadow shadow = new DropShadow();
//当鼠标进入按钮时添加阴影效果
button3.addEventHandler(MouseEvent.MOUSE_ENTERED, (MouseEvent e) -> {
    button3.setEffect(shadow);
});
 
//当鼠标离开按钮时移除阴影效果
button3.addEventHandler(MouseEvent.MOUSE_EXITED, (MouseEvent e) -> {
    button3.setEffect(null);
});

运行这段代码,效果如图3 - 4?所示。

图3 - 4 按钮和阴影

A button with the DropShadow effect applied

按钮样式

接下来我们通过使用Skin类中定义的CSS样式来增强按钮的视觉外观。在JavaFX中使用CSS类似于在HTML中使用CSS,因为每个案例是基于相同的CSS规范。

你可以在一个单独的CSS样式文件中定义CSS,然后通过getStyleClass方法将其应用起来。该方法继承自Node类,所以对所有UI控件都可用。例3 - 5?和?图3 - 4?展示了如何使用CSS及其运行结果。

例3 - 5样式按钮

//CSS代码
.button1{
    -fx-font: 22 arial; 
    -fx-base: #b6e7c9;    
}

?

//JavaFX代码
button1.getStyleClass().add("button1");

-fx-font属性设置了button1的字体名称和大小,?-fx-base属性重设了按钮的默认颜色。

运行这段代码,结果如图3 - 5?所示,button1的背景是浅绿色,有一个比默认字体更大的字体。

图3 - 5 用CSS样式化的按钮

A button styled with CSS

相关的API文档

  • Button

  • Labeled?

上一篇: 开发工具备忘 下一篇: 视频操作类
发表评论
用户名: 匿名