ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2022-02-07 16:34:00  阅读:257  来源: 互联网

标签:对象 javafx javaFX scene Tooltip import new 提示框


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

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

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

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

展示了一个带有Tooltip的PasswordField

 

创建一个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

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();//舞台对象的展现
    }
}

标签:对象,javafx,javaFX,scene,Tooltip,import,new,提示框
来源: https://blog.csdn.net/zy103118/article/details/122809812

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有