javafx 自定义控件_JavaFX自定义控件– Nest Thermostat第2部分

javafx 自定义控件

自从我开始创建Nest恒温器FX自定义控件以来,已经有一段时间了! 因此,上次,正如Gerrit Grunwald所建议的那样,我花了一些时间使用inkscape复制Nest恒温器设计,这是构建JavaFX版本的第一步。

今天,我想与大家分享我尝试在JavaFX中创建它时所犯的错误,以及最终结果。

首先,我开始使用css文件来制作背景,该背景由我的inkscape版本的三个圆组成,带有三个线性渐变和twoa笔触。 正如Gerrit所建议的那样,我仅使用了一个Region并使用CSS设置了样式。

.nest{}.nest .frame {-fx-background-radius		: 1024px;-fx-background-insets		: 1, 4, 20;-fx-background-color 		: linear-gradient(from 27.1% 6.5% to 77.35% 91%,  #e8e8e8 0%, #c6c6c6 50%, #a6a6a6 100%),linear-gradient(from 27.1% 6.5% to 77.35% 91%, #fdfdfd 0%,#ededed 3.552646%,#d7d7d7 7.277831%,#d2d2d2 11.973317%,#c7c7c7 18.269639%,#c1c1c1 25.449407%,#b0b0b0 32.21809%,#999999 37.210315%,#868686 43.145844%,#747474 49.577036%,#5c5c5c 55.667913%,#5a5a5a 61.299348%,#5e5e5e 68.340749%,#676767 76.115692%,#706e6f 82.365692%,#838383 88.148153%,#959595 93.637025%,#a8a8a8 100%),linear-gradient(from 27.1% 6.5% to 77.35% 91%, #1c1715 0%, #181818 50%, #3a3a3a 100%); -fx-border-radius		: 1024px;-fx-border-insets		: 0, 5, 20;-fx-border-width		: 0, 2, 1;-fx-border-color	 	: transparent, linear-gradient(from 27.1% 6.5% to 77.35% 91%, #d5d5d5 0%, #747474 50%, #8f8f8f 100%), #212121;
}

最终结果很好,但是当我调整控件大小时,由于-fx-background-insets和-fx-border-width是绝对像素值,因此结果很差。 您可以在下面看到我的问题。

Nest-Mistake1
我花了一些时间弄清楚该如何纠正。 最后,我唯一的想法是制作三个不同的区域并使用svg路径值。 它将纠正-fx-background-insets像素值,而不是笔划值。

.nest{}.nest .frame {-fx-shape			: "m 519.18435,179.4957 a 266.9594,266.9594 0 1 1 -0.72682,-2.0685";-fx-background-insets	        : 1;-fx-background-color 	        : linear-gradient(from 27.1% 6.5% to 77.35% 91%,  #e8e8e8 0%, #c6c6c6 50%, #a6a6a6 100%);
}.nest .frame1 {-fx-shape			: "m 514.32688,181.18013 a 261.81818,261.81818 0 1 1 -0.71283,-2.02866";-fx-background-color 	        : linear-gradient(from 27.1% 6.5% to 77.35% 91%, #fdfdfd 0%,#ededed 3.552646%,#d7d7d7 7.277831%,#d2d2d2 11.973317%,#c7c7c7 18.269639%,#c1c1c1 25.449407%,#b0b0b0 32.21809%,#999999 37.210315%,#868686 43.145844%,#747474 49.577036%,#5c5c5c 55.667913%,#5a5a5a 61.299348%,#5e5e5e 68.340749%,#676767 76.115692%,#706e6f 82.365692%,#838383 88.148153%,#959595 93.637025%,#a8a8a8 100%);      						-fx-border-width		: 2;-fx-border-color	 	: linear-gradient(from 27.1% 6.5% to 77.35% 91%, #d5d5d5 0%, #747474 50%, #8f8f8f 100%);
}.nest .frame2 {-fx-shape			: "m 497.45305,187.03163 a 243.95858,243.95858 0 1 1 -0.66421,-1.89028";-fx-background-color 	        : linear-gradient(from 27.1% 6.5% to 77.35% 91%, #1c1715 0%, #181818 50%, #3a3a3a 100%); -fx-border-width		: 1;-fx-border-color	 	: #212121;
}

nestmistake2.1

无论如何,当我尝试它时,这就是我得到的结果。

??? 这是什么 ??? 为什么我在这里只看到一个圆圈...嗯,我不得不说我花了一些时间来理解默认值是true的fx-scale-shape和fx-position-shape属性。 这里是这两个css属性的定义

-fx-位置-形状 <布尔值> 真正 如果为true,则表示该形状居于区域的宽度和高度的中心,否则该形状位于其源位置。 如果未指定形状字符串,则无效。
-fx比例形状 <布尔值> 真正 如果为true,则将缩放形状以适合区域的大小,否则,形状将处于其原始大小,并且其位置取决于position-shape属性的值。 如果未指定形状字符串,则无效。

因此,我只需要将比例值设置为false即可……但是,当我这样做时,更改控件大小时,无法正确调整区域中的形状大小……哎呀!

nestmistake2.2

好吧,最终我尝试缩放区域并在调整控件大小时设置其prefSize。 所以我使用下面的代码片段:

private void resize() {size = getWidth() < getHeight() ? getWidth() : getHeight();final double scaleRatio = size / initialSize;frame.setPrefSize(size, size);frame.setScaleX(scaleRatio);frame.setScaleY(scaleRatio);frame1.setPrefSize(size, size);frame1.setScaleX(scaleRatio);frame1.setScaleY(scaleRatio);frame2.setPrefSize(size, size);frame2.setScaleX(scaleRatio);frame2.setScaleY(scaleRatio);
}

Nst-Mistake3

有效 !!!

好吧,我不知道这是否是正确的方法,但这是我到目前为止发现的唯一方法……任何使用其他技巧来解决我在本文中发现的问题的人,请在评论部分大声分享!

刻度和currentCursor和targetCursor使用RadialFX的RadialMenuItem完成 。 现在,它不允许我通过css对其进行自定义,但是现在我开始了解它是如何工作的,下一步是使用css属性来增强RadialFx RadialMenuItem。

在这里总结一下,是我今天取得的结果的一些视频。

  • 代码也将很快在JFXtras上可用!

参考: JavaFX自定义控件–我们JCG合作伙伴 Laurent Nicolas的Nest Thermostat第2部分 ,请访问LoNee先生博客。

翻译自: https://www.javacodegeeks.com/2014/02/javafx-custom-control-nest-thermostat-part-2.html

javafx 自定义控件

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

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

相关文章

初中参观机器人博物馆的作文_展馆导览机器人好不好用?小笨展馆机器人案例...

每次科技发展都会给社会带来技术变革&#xff0c;例如工业革命时代的纺纱机&#xff0c;发电机等&#xff0c;极大地提高了生产效率&#xff0c;推动了社会的进步。二十一世纪&#xff0c;人工智能成为了当下技术变革的排头兵&#xff0c;机器人作为其载体已经被应用在各类展馆…

同底数幂比较大小方法_知识体系构建:初中数学4大知识点及10大解题方法总结(干货)...

基本知识1.数与代数A、数与式&#xff1a;1. 有理数■ 有理数&#xff1a;①整数→正整数/0/负整数②分数→正分数/负分数■ 数轴&#xff1a;①画一条水平直线&#xff0c;在直线上取一点表示0(原点)&#xff0c;选取某一长度作为单位长度&#xff0c;规定直线上向右的方向为正…

4路电话光端机概述及产品特性详解

4路电话光端机&#xff0c;采用桌面型机箱结构设计&#xff0c;提供来电显示功能的4路普通电话接口。那么&#xff0c;关于4路电话光端机的功能、应用及产品特性这一块你是否了解呢&#xff1f;接下来我们就跟随飞畅科技的小编一起来详细了解下吧&#xff01; 4路电话光端机概…

word如何一键全选_学会这七个Word小技巧,五分钟完成3小时的工作

在办公中我们最常用的就是Word&#xff0c;而掌握一些常用Word小技巧&#xff0c;可以助力我们的办公效率&#xff0c;从此和加班说拜拜。今天就让我们一起来看看有哪些我们常用的Word小技巧&#xff0c;快点赞收藏起来吧~一、 Word小技巧汇总1. 文档加密限制编辑有时一些重要文…

服务器日志记录_5种改善服务器日志记录的技术

服务器日志记录在最近的时间里&#xff0c;我们已经看到了许多工具可以帮助您理解日志。 开源项目&#xff08;例如Scribe和LogStash&#xff09;&#xff0c;内部部署工具&#xff08;例如Splunk&#xff09;以及托管服务&#xff08;例如SumoLogic和PaperTrail&#xff09;。…

#让人物运动_篮球人物之黄云龙,淡泊名利的他是篮球运动员中的楷模,你可记得...

阅读本文前&#xff0c;请您先点击上面的“蓝色字体”&#xff0c;再点击“关注”&#xff0c;这样您就可以继续免费收到最新文章了。 说起CBA联赛&#xff…

HDMI光端机基本知识及相关品牌介绍

因技术的提高,光纤价格的降低使它在各个领域得到很好的应用,因此各个光端机的厂家就好比是雨后春笋般发展起来。但是这里的厂家大部分技术并不是完全成熟&#xff0c;开发新技术需要耗资和人力、物力等&#xff0c;这就产生厂家多是中小企业&#xff0c;各品牌也先后出现。但是…

线程,代码和数据–多线程Java程序实际运行的方式

有些事情是您在学术或培训班上没有学到的&#xff0c;经过几年的工作经验后才逐渐了解&#xff0c;然后才意识到&#xff0c;这是非常基本的事情&#xff0c;我为什么错过了这么多年。 了解多线程Java程序的执行方式就是其中之一。 您肯定已经听说过线程&#xff0c;如何启动线…

HDMI光端机是什么?hdmi光端机产品参数及性能特点介绍

HDMI光端机就是光信号传输的终端设备。在广泛领域应用中&#xff0c;往往需要把HDMI信号源输送远处进行处理。最为突出的问题有&#xff1a;远处接收到的信号出现偏色、模糊&#xff0c;信号产生重影和拖尾及网纹干扰。(多模)/(单模)HDMI视频光端机发送器和相应的光收发系列产品…

html中的保存功能代码怎么写,java保存html代码怎么写

java保存html代码怎么写[2021-01-31 03:29:24] 简介:php去除nbsp的方法&#xff1a;首先创建一个PHP代码示例文件&#xff1b;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐&#xff…

hdmi光端机运用于多媒体信息发布系统案例介绍

杭州飞畅科技HDMI光端机运用于多媒体信息发布等应用系统中&#xff0c;能将HDMI音视频信号进行远距离传输。用普通的HDMI电缆长距离传输&#xff0c;会出现信号差&#xff0c;容易受干扰&#xff0c;显示出来的图像会出现模糊、拖尾、分色等现象。如果传输距离短&#xff0c;就…

西门子实数转整数_西门子PLC指令全都翻译过来了!

点击蓝字关注我们有时我们关注的公众号消息比较多&#xff0c;错过了一些自己喜欢的消息&#xff0c;不能及时看到工控论坛的推送&#xff0c;我们可以给公众号加星标或置顶。那如何星标置顶呢&#xff1f;【打开一篇工控论坛公众号的文章&#xff0c;点击文章标题下方的蓝色字…

鸿蒙os怎么还没发布,关于鸿蒙OS系统!小米为何从支持到“失声”?看看中兴就知道了!...

鸿蒙OS在还没有正式召开发布会的时候&#xff0c;大家就一直很关注友商们对于鸿蒙OS的态度。此前中兴就表过态&#xff0c;他们不会考虑鸿蒙OS的系统&#xff0c;因为中兴自己有这一方面的规划。而在鸿蒙发布之前&#xff0c;除了中兴是正式的官方发出了相关的态度之外&#xf…

js webapp://_Project Student:维护Webapp(只读)

js webapp://这是Project Student的一部分。 其他职位包括具有Jersey的 Web服务 客户端&#xff0c;具有Jersey的 Web服务服务器 &#xff0c; 业务层 &#xff0c; 具有Spring数据的持久性 &#xff0c;分片集成测试数据 &#xff0c; Webservice集成和JPA标准查询 。 当我开…

光端机安装调试需注意的几大因素

安装光端机时要做好现场的防护措施&#xff0c;防潮、防水、防尘&#xff0c;同时注意现场的实际操作&#xff0c;必须配备合适的光纤使用&#xff0c;不能使用残缺故障的光纤&#xff0c;如果不匹配&#xff0c;则会严重影响光端机传输质量&#xff0c;涉及光缆熔接时&#xf…

catia钣金根据线段折弯_钣金折弯加工注意事项有哪些?钣金折弯要点介绍

钣金折弯时金属加工中常用到的一道工序&#xff0c;它的用途十分广泛&#xff0c;是通过折弯机把一种板材加工成各种角度&#xff0c;加上数控功能后&#xff0c;钣金折弯有效地提高了加工精度和生产效率。然而&#xff0c;在钣金折弯过程中存在着一些注意事项和要点&#xff0…

开关量光端机产品特点及应用范围介绍

飞畅科技生产的开关量光端机为纯开关量(告警量)光端机提供1-7路开关量在光纤中传输&#xff0c;该产品解决了电磁干扰、地环干扰和雷电破坏的难题&#xff0c;提高了数据通讯的可靠性、安全性和保密性&#xff0c;可广泛用于各种工业控制、过程控制和交通控制等场合&#xff0c…

计算机网络系统什么组成,计算机网络系统是由什么组成的

计算机网络系统是由网络硬件和网络软件组成的。在网络系统中&#xff0c;硬件的选择对网络起着决定的作用&#xff0c;而网络软件则是挖掘网络潜力的工具。一般是指极端机设备、传输介质、和网络连接设备。至2011年&#xff0c;网络连接设备有很多&#xff0c;功能不一&#xf…

ds1302典型应用原理图_不同类型的光纤激光器,在工业中有哪些典型应用

激光器根据材料分类可分为光纤激光器、半导体激光器、固体激光器与C02激光器等。而在整个激光器的工业应用中&#xff0c;光纤激光器独树一帜&#xff0c;近几年发展速度最快。目前光纤激光器的种类越来越多&#xff0c;根据激光输出时域特性的不同&#xff0c;可以将光纤激光器…

webapp文本编辑器_Project Student:维护Webapp(可编辑)

webapp文本编辑器这是Project Student的一部分。 其他职位包括带有Jersey的 Web服务 客户端&#xff0c;带有Jersey的 Web服务服务器 &#xff0c; 业务层 &#xff0c; 带有Spring数据的持久性 &#xff0c;分片集成测试数据 &#xff0c; Webservice集成 &#xff0c; JPA标准…