javaFX学习之提示框(Tooltip) 组件

参考原文链接:DOC-03-22 提示框(Tooltip) | JavaFX中文资料

Tooltip控件,它可以设置给任何UI控件,当鼠标移动到该控件上时Tooltip就会显示。

Tooltip类表示一个常见的UI组件,它常用于为其他UI控件显示附加的信息。通过调用setTooltip方法可以将Tooltip设置给任何控件。

Tooltip有两种不同的状态:被激活和显示中。当Tooltip是被激活状态时,说明鼠标移动到了一个控件上。当Tooltip是显示中状态时,说明它已经明确地显示出来了。已经显示的Tooltip同样也是被激活的。在Tooltip从被激活到被明确显示出来之间一般有一个延迟

展示了一个带有Tooltip的PasswordField

javaFX学习之提示框(Tooltip) 组件 

创建一个Tooltip

它在JavaFX应用程序中创建了如上图所示的带有Tooltip的Password

添加TooltipPasswordField 

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

javaFX学习之提示框(Tooltip) 组件

tooltip不仅可以包含附加或者辅助的信息,其也可以展示数据 

 在Tooltip中展示应用程序数据

 javaFX学习之提示框(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();//舞台对象的展现
    }
}
上一篇:Linux主机bonding的配置--采用主备模式


下一篇:echarts tooltip显示位置设置