JavaFX UI控件教程(二十一)之Tooltip

翻译自  Tooltip

在本章中,您将了解工具提示,即当鼠标光标悬停该控件时,可以为任何UI控件设置的控件。

Tooltip类表示通常用于显示关于所述用户接口的控制附加信息的公共UI组件。可以通过调用setTooltip方法在任何控件上设置工具提示。

工具提示有两种不同的状态:激活和显示。激活工具提示后,鼠标移动到控件上。当工具提示处于显示状态时,它实际上会出现。显示的工具提示也被激活。工具提示激活时和实际显示之间通常会有一些延迟。

带有工具提示的密码字段如图20-1所示。

图20-1添加到密码字段的工具提示

 

创建工具提示

研究示例20-1中的代码片段,该代码片段使用上图所示的JavaFX应用程序中的工具提示创建密码字段。

示例20-1在密码字段中添加工具提示

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构造函数中或使用该setText方法定义文本标题。

由于Tooltip该类是类的扩展,因此Labeled您不仅可以添加文本标题,还可以添加图形图标。例20-2中的代码片段在密码字段的工具提示中添加了一个图标。

示例20-2在工具提示中添加图标

Image image = new Image(getClass().getResourceAsStream("warn.png")
);
tooltip.setGraphic(new ImageView(image));

将此代码片段添加到应用程序并编译并运行代码后,将显示图20-2中所示的工具提示。

图20-2带图标的工具提示

工具提示不仅可以包含附加信息或辅助信息,还可以包含数据。

 

在工具提示中显示应用程序数据

图20-3中的应用程序使用工具提示中显示的信息来计算酒店住宿的总成本

图20-3计算酒店价格

每个复选框都附有工具提示。每个工具提示都会显示特定预订选项的费率。如果用户选中复选框,则会将相应的值添加到总计。如果取消选中所选复选框,则会从总计中扣除相应的值。

查看例20-3中显示的应用程序的源代码。

示例20-3使用工具提示计算酒店价格

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
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 Main extends Application {final static String[] rooms = new String[]{"Accommodation (BB)","Half Board","Late Check-out","Extra Bed"};final static Integer[] rates = new Integer[]{100, 20, 10, 30};final CheckBox[] cbs = new CheckBox[rooms.length];final Label total = new Label("Total: $0");Integer sum = 0;public static void main(String[] args) {launch(args);}@Overridepublic void start(Stage stage) {Scene scene = new Scene(new Group());stage.setTitle("Tooltip Sample");stage.setWidth(300);stage.setHeight(150);total.setFont(new Font("Arial", 20));for (int i = 0; i < rooms.length; i++) {final CheckBox cb = cbs[i] = new CheckBox(rooms[i]);final Integer rate = rates[i];final Tooltip tooltip = new Tooltip("$" + rates[i].toString());tooltip.setFont(new Font("Arial", 16));cb.setTooltip(tooltip);cb.selectedProperty().addListener(new ChangeListener<Boolean>() {public void changed(ObservableValue<? extends Boolean> ov,Boolean old_val, Boolean new_val) {if (cb.isSelected()) {sum = sum + rate;} else {sum = sum - rate;}total.setText("Total: $" + sum.toString());}});}VBox vbox = new VBox();vbox.getChildren().addAll(cbs);vbox.setSpacing(5);HBox root = new HBox();root.getChildren().add(vbox);root.getChildren().add(total);root.setSpacing(40);root.setPadding(new Insets(20, 10, 10, 20));((Group) scene.getRoot()).getChildren().add(root);stage.setScene(scene);stage.show();}
}

中的代码行实施例20-4在用实施例20-3创建工具提示和分配文本字幕到它。该Integer期权价格的值转换成String数值。

示例20-4设置工具提示的值

final Tooltip tooltip = new Tooltip("$" + rates[i].toString())

您可以通过应用CSS来改变工具提示的视觉外观。

 

相关的API文档 

  • Tooltip

  • Labeled

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325033.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript对象与事件

JavaScript中常用对象 <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><script type"text/javascript">/********[1]日期对象的学习****************/function demo1(){ var date new D…

OJ7627-鸡蛋的硬度【各种dp之4】

题目&#xff08;直接贴了&#xff09; 最近XX公司举办了一个奇怪的比赛&#xff1a;鸡蛋硬度之王争霸赛。参赛者是来自世 界各地的母鸡&#xff0c;比赛的内容是看谁下的蛋最硬&#xff0c;更奇怪的是XX公司并不使用什么精密仪器来测量蛋的硬度&#xff0c;他们采用了一种最老…

layui如何实现添加数据时关闭页面层,并实时刷新表格数据?

可能看到标题的你没有明白我到底想表达啥&#xff1f;&#xff08;我起名字时删改多遍&#xff0c;这是最终定下来的&#xff09;&#xff0c;不过&#xff0c;为了让大家看的明白&#xff0c;我专门去做了个演示视频&#xff1a;演示案例使用的技术&#xff1a;ssh框架layui表…

属性VS局部变量

类中属性的使用属性&#xff08;成员变量&#xff09; vs 局部变量1.相同点&#xff1a;1.1 定义变量的格式&#xff1a;数据类型 变量名 变量值1.2 先声明&#xff0c;后使用1.3 变量都有其对应的作用域2.不同点&#xff1a;2.1 在类中声明的位置的不同属性&#xff1a;…

.net core 集成 autofac

1. Install Install-Package AutofacInstall-Package Autofac.Extensions.DependencyInjection 2.Startup 2.1 增加成員 public IContainer ApplicationContainer { get; private set; } 2.2 Startup.ConfigureServices 返回值改為&#xff1a;IServiceProvider 末尾中增…

JavaFX UI控件教程(二十三)之Menu

翻译自 Menu 本章介绍如何创建菜单和菜单栏&#xff0c;添加菜单项&#xff0c;将菜单分组&#xff0c;创建子菜单以及设置上下文菜单。 您可以使用以下JavaFX API类在JavaFX应用程序中构建菜单。 菜单栏 菜单项 菜单 CheckMenuItem RadioMenuItem 菜单 CustomMenuItem…

利用bootstraptable展示数据,对数据进行排序分页等操作

今天分享一下bootstraptable的相关技能点&#xff0c;由于第一次接触&#xff0c;所以刚开始碰了好多壁&#xff0c;于是趁现在过去不久&#xff0c;先总结总结。 Bootstraptable简单的来说就是一个表格控件&#xff0c;但是这个表格可不是一般的表格&#xff0c;分页、排序、…

JavaScript BOM

标题什么是BOM 1.BOM是Browser Object Model的简写&#xff0c;即浏览器对象模型。 2.BOM由一系列对象组成&#xff0c;是访问、控制、修改浏览器的属性的方法 3.BOM没有统一的标准(每种客户端都可以自定标准)。 4.BOM的顶层是window对象 BOM对象学习 window <!DOCTYPE h…

OJ8462-大盗阿福【各种dp之5】

题目 我们的黑虎阿福改行当小偷啦!然后他去偷东西&#xff0c;然后那个zz报警系统只有在他洗劫两家相邻的店才会报警&#xff0c;然后求他在不触发警报的情况下能拿到最多的钱。 &#xff08;注&#xff1a;没有偷了会扣钱的店铺&#xff09; 输入 2 3 1 8 2 4 10 7 6 1…

交换两个对象

//问题二&#xff1a;使用冒泡排序按学生成绩排序&#xff0c;并遍历所有学生信息for(int i 0;i < stus.length - 1;i){for(int j 0;j < stus.length - 1 - i;j){if(stus[j].score > stus[j 1].score){//如果需要换序&#xff0c;交换的是数组的元素&#xff1a;St…

JavaFX UI控件教程(二十四)之Password Field

翻译自 Password Field 在本章中&#xff0c;您将了解另一种类型的文本控件&#xff0c;即密码字段。 本PasswordField类实现一个专门的文本字段。通过显示回显字符串来隐藏用户键入的字符。图23-1显示了一个密码字段&#xff0c;其中包含提示消息。 图23-1带有提示消息的密…

3分钟内看完这,bootstraptable表格控件,受益匪浅!

今天分享一下bootstraptable的相关技能点&#xff0c;由于第一次接触&#xff0c;所以刚开始碰了好多壁&#xff0c;于是趁现在过去不久&#xff0c;先总结总结。Bootstraptable简单的来说就是一个表格控件&#xff0c;但是这个表格可不是一般的表格&#xff0c;分页、排序、查…

微软Azure开源开发者(深圳)峰会等你来

微软开发技术与云平台自从迈向开放、开源、跨平台的转型以来&#xff0c;已经受到全球开源社区们的关注。 从 Github 上高居世界首位的开源项目贡献数量&#xff0c;可以看到微软贯彻开源战略的实际行动。另一方面&#xff0c;微软也主动与开源社区做密切的技术交流。 本次 Azu…

OJ4121 and OJ2968-股票买卖 and Maximun sum【各种dp之6 and 9】

股票买卖 题目 阿福该炒股了&#xff0c;然后假设他已经预测到了后几天的股票&#xff0c;要求他最多买卖两次的赚到的最大值。 &#xff08;注&#xff1a;他只有第一次卖了才能再买&#xff09; 输入 3 7 5 14 -2 4 9 3 17 6 6 8 7 4 1 -2 4 18 9 5 2 输出 28 2…

面向对象VS面向过程

1.面向过程&#xff1a;强调的是功能行为&#xff0c;以函数为最小单位&#xff0c;考虑怎样做。 2.面向对象&#xff1a;强调具备了功能的对象&#xff0c;以类/对象为最小单位&#xff0c;考虑谁来做。

这个点名系统太好用了,快来看看……

声明&#xff1a;软件为本人原创&#xff0c;后台回复&#xff1a;随机点名系统&#xff0c;免费下载。大家好&#xff0c;我是雄雄&#xff0c;昨天公众号给大家分享了windows系统和office办公软件激活的方法&#xff0c;正中好多粉丝的下怀。【原文在这里】今天在给大家分享一…

JavaFX UI控件教程(二十二)之Titled Pane和Accordion

翻译自 Titled Pane and Accordion 本章介绍如何在JavaFX应用程序中使用accordion和title窗格的组合。 标题窗格是带标题的面板。它可以打开和关闭&#xff0c;它可以封装任何Node诸如UI控件或图像以及添加到布局容器的元素组。 标题窗格可以使用手风琴控件进行分组&#x…

在ASP.NET Core 2.0中使用MemoryCache

说到内存缓存大家可能立马想到了HttpRuntime.Cache,它位于System.Web命名空间下&#xff0c;但是在ASP.NET Core中System.Web已经不复存在。今儿个就简单的聊聊如何在ASP.NET Core中使用内存缓存。我们一般将经常访问但是又不是经常改变的数据放进缓存是再好不过了&#xff0c;…

ssl1016 OJ8467-数的划分 鸣人的影分身【各种dp之8 7】

数的划分 Description 将整数n分成k份&#xff0c;且每份不能为空&#xff0c;任意两份不能相同(不考虑顺序)。   例如&#xff1a;n7&#xff0c;k3 (6&#xff1c;n&#xff1c;&#xff1d;200,2&#xff1c;&#xff1d;k&#xff1c;&#xff1d;6&#xff09;&#…

数据库的嵌套查询和统计查询

①求选修了数据结构的学生学号和成绩。 select s_no,score from choice where s_no in (select s_no from course where course_name数据结构) ②求01001课程的成绩高于张彬的学生学号和成绩。 select s_no,score from choice where course_no01001 and score>(select scor…