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;机器人作为其载体已经被应用在各类展馆…

【渝粤教育】 国家开放大学2020年春季 1054流通概论 参考试题

试卷代号&#xff1a;1062 2 0 2 0年春季学期期末统一考试 文学英语赏析 试题 2020年7月 注 意 事 项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考…

3G-SDI光端机产品技术参数规格及产品应用领域

3G-SDI系列光端机性能稳定、画质清晰、稳定性高&#xff0c;并带LED状态指示&#xff0c;可直观地观察光端机的工作状态&#xff0c;适合SDI视频监控和远距离视频采集。接下来我们就来为大家详细介绍下3G-SDI光端机产品技术参数规格及产品应用领域&#xff0c;一起来看看吧&…

android studio多屏幕,为多个屏幕实现多个布局但在android studio 2.1中无法工作

什么你应该做的是规模上的一切你根据屏幕尺寸显示屏幕。例如&#xff1a;如果你有一个TextView&#xff0c;你可以这样做&#xff1a;TextView myTextView (TextView) findViewById(R.id.myTextView_ID);int tempSize myTextView.getTextSize();myTextView.setSize(TypedValu…

【渝粤教育】 国家开放大学2020年春季 1069中央银行理论与实务 参考试题

试卷代号&#xff1a;1073 2 0 2 0年春季学期期末统一考试 法律文书 试题 2020年7月 注意事项 一、将你的学号、姓名及分校&#xff08;工作站&#xff09;名称填写在答题纸的规定栏内。考试结束后&#xff0c;把试卷和答题纸放在桌上。试卷和答题纸均不得带出考场。监考人收完…

通过WAD和Docker热部署Java Enterprise

我已经录制了一个视频&#xff0c;该视频介绍了如何使用Adam Bien和Docker容器使用Watch and Deploy &#xff08;WAD&#xff09;来最大程度地缩短开发周转时间。 WAD工具监视文件更改&#xff0c;并将重新构建我们的应用程序并将其重新部署到自动部署目录。 我们将看到如何将…

【渝粤教育】 国家开放大学2020年春季 1080工程数学(本) 参考试题

试卷代号&#xff1a;1084 2 0 2 0年春季学期期末统一考试 计算方法&#xff08;本&#xff09; 试题&#xff08;开卷&#xff09; 2020年7月 一、单项选择题&#xff08;每小题5分&#xff0c;共15分&#xff09; 1.近似数a 0. 3150103的误差限是&#xff08; &#xff09; A…

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

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

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

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

【渝粤教育】 国家开放大学2020年春季 1108钢结构(本) 参考试题

试卷代号&#xff1a;1116 2 0 2 0年春季学期期末统一考试 机电控制工程基础 试题 2020年7月 一、单项选择题&#xff08;每小题4分&#xff0c;共32分&#xff09; 1&#xff0e;系统的稳定性取决于( )。 A&#xff0e;系统干扰的类型 B&#xff0e;系统干扰点的位置 C&#x…

Apache Ant 1.10.6发布–用于junitlauncher的fork模式以及新的jmod和链接任务

Apache Ant 1.10.6已于本周发布。 此版本包含许多错误修复以及一些非常令人兴奋的新功能。 完整的发行说明可在此处获得 &#xff0c;下载本身也可以在此处获得 。 在本文中&#xff0c;我将介绍该版本中引入的一些新功能。 使用junitlauncher任务在派生的JVM中运行JUnit5测试…

【渝粤教育】 国家开放大学2020年春季 1130卫生法学 参考试题

试卷代号&#xff1a;1133 2 0 2 0年春季学期期末统一考试 文献检索 试题&#xff08;开卷&#xff09; 2020年7月 一、单项选择题&#xff08;每小题2分&#xff0c;共30分&#xff0c;每小题仅有一项答案正确&#xff0c;请将正确答案的序号填在括号内&#xff09; 1.下列哪一…

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

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

signature=a662b42175c342c2f67535627a2cf0a4,California and Nevada Railroad

摘要&#xff1a;Please note that the content of this book primarily consists of articles available from Wikipedia or other free sources online. The California and Nevada Railroad was a steam narrow gauge railroad which ran in the East Bay of the San Franci…

32路视频光端机性能指标及视频特性介绍

32路视频光端机带有视频及数据状态指示,可监控系统的正常运行。其采用结构模块化设计&#xff0c;用户可根据现场具体情况灵活选择或定制配置。那么&#xff0c;32路视频光端机性能指标及视频特性都有哪些呢&#xff1f;接下来我们就一起来看看吧&#xff01; 一、32路视频光端…

【渝粤教育】 国家开放大学2020年春季 1171科学与技术 参考试题

试卷代号&#xff1a;1175 座位号□□ 2 0 2 0年春季学期期末统一考试 水利水电工程建筑物 试题 2020年7月 一、单项选择题&#xff08;每小题3分&#xff0c;共15分。在所列备选项中&#xff0c;选1项正确的或最好的作为答案&#xff0c;将选项号填入各题的括号中&#xff09;…

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

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

【渝粤教育】 国家开放大学2020年春季 1192高层建筑施工 参考试题

试卷代号&#xff1a;1248 2 0 2 0年春季学期期末统一考试 公共部门人力资源管理 试题 2020年7月 一、不定项选择题&#xff08;每题2分&#xff0c;共10分&#xff0c;每题至少有一个正确答案&#xff0c;多 选或少选都不能得分&#xff09; 1-非正式的行政人事制度安排就是人…

【渝粤教育】 国家开放大学2020年春季 1260软件工程 参考试题

试卷代号&#xff1a;1283 座位号口口 2 0 2 0年春季学期期末统一考试 社会保障学&#xff08;本&#xff09; 试题 2020年7月 一、单项选择题&#xff08;在各题的备选答案中&#xff0c;只有1项是正确的&#xff0c;请将正确答案的序号&#xff0c;填写在题中或题后的括号内。…

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

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