javaFX 学习之按钮的创建和交互事件处理机制

原文地址:DOC-03-03 按钮(Button) | JavaFX中文资料

JavaFX API中的Button类用来处理当用户点击一个按钮时执行一个动作(Action)。Button类继承自Labeled类,它可以显示文本,图像,或两者兼而有之。图显示了几个不同效果的按钮,学习如何创建这些类型的按钮

不同类型的按钮

3-3-1 button-collections

 

创建一个按钮

JavaFX应用程序中有三种构造方法来创建Button控件,见例

创建按钮

3

4

5

6

7

//一个空Button

Button button1 = new Button();

//一个指定了文本标题的Button

Button button2 = new Button("Accept");

//一个指定了文本标题和图标的Button

Image imageOk = new Image(getClass().getResourceAsStream("ok.png"));

Button button3 = new Button("Accept", new ImageView(imageOk));

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

·setText(String text)method——指定文本

·setGraphic(Node graphic)method——指定图标

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

 Button添加图标

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

运行这段代码,效果如图所示。

带图标的Button

3-3-2 decline-button

给按钮设置的图标是一个ImageView对象。然而你也可以使用其他图形对象。例如位于javafx.scene.shape 包中的各种形状。当为按钮同时设置了文本和图形内容时,可以使用setGraphicTextGap方法来设置它们之间的间距 

 

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

Button的几种状态

3-3-3 button-states

添加Action

当鼠标点击按钮时,首要的功能就是执行一个Action。使用setOnAction的方法来定义当用户点击按钮时将发生什么展示了为button2定义一个Action

Button定义Action

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

展示了如何处理一个ActionEvent这样当用户点击button2时,一个Label的文本被设置为Accepted

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

应用视觉特效

因为Button类继承自Node类,所以你可以为Button添加javafx.scene.effect包下的任何特效来增强视觉效果。例onMouseEntered事件被触发时会向button3上添加阴影

(DropShadow)特效

添加DropShadow特效

1
2
3
4
5
6
7
8
9
10
11
DropShadow shadow = new DropShadow();
 
//当鼠标进入按钮时添加阴影特效
button3.addEventHandler(MouseEvent.MOUSE_ENTERED, (MouseEvent e) -> {
    button3.setEffect(shadow);
});
 
//当鼠标离开按钮时移除阴影效果
button3.addEventHandler(MouseEvent.MOUSE_EXITED, (MouseEvent e) -> {
    button3.setEffect(null);
});

 

运行这段代码,效果如所示。

Drop Shadow特效的Button

3-3-4 button-with-shadow

 

 

Button设置样式

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

你可以在一个单独的CSS样式文件中定义样式,然后通过getStyleClass方法在应用程序中使用它。该方法继承自Node类,并且在所有的UI控件中都可用展示了如何使用CSS及其运行结果。

Button设置样式

1
2
3
4
5
6
7
8
// CSS文件中的代码
.button1{
    -fx-font: 22 arial;
    -fx-base: #b6e7c9;  
}
 
// ButtonSample.java中的代码
button1.getStyleClass().add("button1");

 

-fx-font属性设置了button1的字体名称和大小,-fx-base属性重设了按钮的默认颜色。运行这段代码,结果如所示,button1的背景将变成浅绿色,并且字体会变得比默认字体更大。

使用CSS样式的Button

3-3-5 styled-button

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值