参考原文链接:DOC-03-22 提示框(Tooltip) | JavaFX中文资料
Tooltip控件,它可以设置给任何UI控件,当鼠标移动到该控件上时Tooltip就会显示。
Tooltip类表示一个常见的UI组件,它常用于为其他UI控件显示附加的信息。通过调用setTooltip方法可以将Tooltip设置给任何控件。
Tooltip有两种不同的状态:被激活和显示中。当Tooltip是被激活状态时,说明鼠标移动到了一个控件上。当Tooltip是显示中状态时,说明它已经明确地显示出来了。已经显示的Tooltip同样也是被激活的。在Tooltip从被激活到被明确显示出来之间一般有一个延迟
展示了一个带有Tooltip的PasswordField
创建一个Tooltip
它在JavaFX应用程序中创建了如上图所示的带有Tooltip的Password
添加Tooltip到PasswordField
3 4 5 6 7 | final PasswordField pf = new PasswordField(); final Tooltip tooltip = new Tooltip(); tooltip.setText( "\nYour password must be\n" + "at least 8 characters in length\n" + ); pf.setTooltip(tooltip); |
javafx.scene.control包中的每个UI控件都有setTooltip方法可用来添加一个Tooltip。你可以通过Tooltip的构造方法或者使用setText方法来定义一个文本标题。
因为Tooltip类是Labeled类的一个扩展,你不仅可以添加一个文本标题,还可以添加一个图标
添加图标到Tooltip
Image image = new Image(
getClass().getResourceAsStream("warn.png")
);
tooltip.setGraphic(new ImageView(image));//给tooltip组件上添加外观图形
带图标的Tooltip
tooltip不仅可以包含附加或者辅助的信息,其也可以展示数据
在Tooltip中展示应用程序数据
import javafx.application.Application; import javafx.beans.value.ObservableValue; import javafx.geometry.Insets; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.control.Tooltip; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.scene.text.Font; import javafx.stage.Stage; public class TooltipSample extends Application { final static String[] rooms = new String[]{ "选项1", "选项2", "选项3", "选项4" }; final static Integer[] rates = new Integer[]{ 100, 20, 10, 30 }; final CheckBox[] cbs = new CheckBox[rooms.length];//创建CheckBox组件数组 final Label total = new Label("总计: $0");//创建label对象 Integer sum = 0; public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { Scene scene = new Scene(new Group());//场景上添加节点容器组对象 stage.setTitle("Tooltip示例");//舞台对象上添加标题 stage.setWidth(600);//舞台宽度 stage.setHeight(500);//舞台高度 total.setFont(new Font("Arial", 20));//字体设置 for (int i = 0; i < rooms.length; i++) { final CheckBox cb = cbs[i] = new CheckBox(rooms[i]);//创建CheckBox对象 final Integer rate = rates[i]; final Tooltip tooltip = new Tooltip("$" + rates[i].toString());//设置提示标题对象 tooltip.setFont(new Font("Arial", 16));//设置字体对象 cb.setTooltip(tooltip);//checkBox类型对象上面添加提示框对象 cb.selectedProperty().addListener(//checkBox类型对象的值变更事件处理回调函数 (ObservableValue<? extends Boolean> ov, Boolean old_val, Boolean new_val) -> { if (cb.isSelected()) {//如果本checkBox对象cb被选中则总计数量累加 sum = sum + rate; } else {//否则总计数量消减 sum = sum - rate; } total.setText("Total: $" + sum.toString());//总计数量标签组件设置文本内容 } ); } VBox vbox = new VBox();//创建VBox类型对象 vbox.getChildren().addAll(cbs);//vbox布局对象中添加checkBox类型数组 vbox.setSpacing(5);//设置vbox布局对象中的各元素之间的间隙距离 HBox root = new HBox();//创建水平盒子布局对象 root.getChildren().add(vbox);//水平盒子布局对象上添加垂直盒子布局对象 root.getChildren().add(total);//水平盒子对象上添加total对象 root.setSpacing(40);//设置被布局元素之间的间隙空间 root.setPadding(new Insets(20, 10, 10, 20));//水平盒子布局对象的内边距设置 ((Group) scene.getRoot()).getChildren().add(root);//场景上的节点组对象挂载水平盒子对象 stage.setScene(scene);//舞台上设置场景 stage.show();//舞台对象的展现 } }