JavaFX基本控件-Button
- 常用属性
- text
- padding
- alignment
- textAlignment
- width
- height
- tooltip
- border
- wrapText
- ellipsisString
- underline
- graphic
- graphicTextGap
- disable
- 实现方式
- Java实现
- fxml实现
常用属性
text
设置文本内容
button.setText("测试按钮");
padding
内边距
button.setPadding(new Insets(5, 10, 5, 10));
alignment
文本对齐方式,
单行
显示内容少的时候体现
button.setAlignment(Pos.CENTER);
textAlignment
文本对齐方式,在
多行
文本换行的时候着重体现
button.setTextAlignment(TextAlignment.LEFT);
width
button.setMinWidth(100);
button.setPrefWidth(100);
button.setMaxWidth(200);
height
button.setMinHeight(50);
button.setPrefHeight(50);
button.setMaxHeight(100);
tooltip
提示信息,鼠标放上去会给出一个提示
button.setTooltip(new Tooltip("测试Tooltip"));
border
设置边框
Border border = new Border(new BorderStroke(Paint.valueOf("red"), BorderStrokeStyle.SOLID, new CornerRadii(20), new BorderWidths(3)));
button.setBorder(border);
wrapText
设置是否自动换行
button.setWrapText(true);
ellipsisString
设置超长的省略号(自定义字符串)
button.setEllipsisString("^^^^^^");
underline
设置文本下划线
button.setUnderline(true);
graphic
按钮图标
button.setGraphic(new ImageView(new Image("icon.png")));
graphicTextGap
按钮上图标与文本之间的距离
button.setGraphicTextGap(20);
disable
设置是否禁用按钮
button.setDisable(true);
实现方式
Java实现
public static VBox demo1() {
VBox vBox = new VBox();
vBox.setPadding(new Insets(10, 10, 5, 20));
Button button = build("按钮1-单行");
button.setGraphic(new ImageView(new Image("icon.png")));
button.setGraphicTextGap(20);
button.setAlignment(Pos.CENTER_LEFT);
button.setUnderline(true);
vBox.getChildren().add(button);
button = build("按钮2-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试-多行测试");
button.setWrapText(true);
vBox.getChildren().add(button);
button = build("按钮3-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长-单行超长");
button.setWrapText(false);
button.setAlignment(Pos.CENTER_RIGHT);
button.setDisable(true);
vBox.getChildren().add(button);
return vBox;
}
private static Button build(String text) {
Button button = new Button();
button.setBorder(new Border(new BorderStroke(Paint.valueOf("red"), BorderStrokeStyle.SOLID, new CornerRadii(20), new BorderWidths(3))));
button.setPadding(new Insets(5, 10, 5, 10));
button.setTooltip(new Tooltip(text + "Tooltip"));
button.setText(text);
button.setAlignment(Pos.CENTER_RIGHT);
button.setTextAlignment(TextAlignment.RIGHT);
button.setMinWidth(100);
button.setPrefWidth(100);
button.setMaxWidth(200);
button.setMinHeight(50);
button.setPrefHeight(50);
button.setMaxHeight(100);
button.setWrapText(true);
button.setEllipsisString("^^^^^^");
return button;
}
fxml实现
<VBox prefHeight="400" prefWidth="600" xmlns="http://javafx.com/javafx/17.0.2-ea" xmlns:fx="http://javafx.com/fxml/1">
<children>
<Button alignment="CENTER" ellipsisString="^^^^^^" maxHeight="100" maxWidth="200" prefHeight="50"
prefWidth="100"
text="按钮1,测试一下换行数据,测试一下换行数据" textAlignment="RIGHT" textFill="#877f3a"
underline="true" wrapText="true">
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
<font>
<Font name="Arial Bold" size="14.0"/>
</font>
</Button>
<Button alignment="CENTER" ellipsisString="^^^^^^" maxHeight="100" maxWidth="200" prefHeight="50"
prefWidth="100" text="按钮2" textAlignment="LEFT" textFill="#877f3a"
underline="true" wrapText="false" disable="true">
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
<font>
<Font name="Arial Bold" size="14.0"/>
</font>
</Button>
<Button alignment="CENTER" ellipsisString="^^^^^^" maxHeight="100" maxWidth="200" prefHeight="50"
prefWidth="100" text="按钮3,单行超长测试,单行超长测试" textAlignment="LEFT" textFill="#877f3a"
underline="true" wrapText="false" disable="true">
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0"/>
</padding>
<font>
<Font name="Arial Bold" size="14.0"/>
</font>
</Button>
</children>
</VBox>