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

javafx 自定义控件

嗨,经过与同事的讨论,我今天决定展示css方法并不是唯一可用于创建自定义控件的方法。 当然,它允许提供一些外观扩展点,但是可以使用代码API使用相同的方法(与向JavaFX的转换)一起使用。

这是图形初始化方法,通过调用JavaFX对象API,我已替换了CSS初始化代码(现已注释掉)。

private void initGraphcis() {// frame = new Region();// frame.getStyleClass().setAll("frame");frame = new Circle();frame.setFill(FRAME_FILL);shadow = new DropShadow();shadow.setBlurType(BlurType.ONE_PASS_BOX);shadow.setColor(Color.rgb(0, 0, 0, 0.4));frame.setEffect(shadow);frame1 = new Circle();// frame1.getStyleClass().setAll("frame1");frame1.setFill(FRAME1_FILL);frame1.setStroke(FRAME1_STROKE);frame1.setStrokeWidth(2.0);frame2 = new Circle();// frame2.getStyleClass().setAll("frame2");frame2.setFill(FRAME2_FILL);frame2.setStroke(FRAME2_STROKE);frame3 = new Circle();// frame3.getStyleClass().setAll("frame3");frame3.setFill(Color.web("#c44f1a"));line = new SVGPath();// line.getStyleClass().setAll("line");line.setContent("M 0.75,1.806272 C 0.75,1.806272 67.422114,-2.659598 118.06708,1.085452 130.59357,2.011752 166.81696,11.039202 185.35089,11.189052 206.02921,11.356252 242.24677,2.052122 255.84883,1.085452 304.58057,-2.377808 372.89963,1.806272 372.89963,1.806272");line.setFill(Color.web("#ffffff00"));line.setStroke(Color.web("#4d4d4d"));line.setStrokeWidth(1.5);line1 = new SVGPath();// line.getStyleClass().setAll("line1");line1.setContent("M 0.75,1.806272 C 0.75,1.806272 67.422114,-2.659598 118.06708,1.085452 130.59357,2.011752 166.81696,11.039202 185.35089,11.189052 206.02921,11.356252 242.24677,2.052122 255.84883,1.085452 304.58057,-2.377808 372.89963,1.806272 372.89963,1.806272");line.setFill(Color.web("#ffffff00"));line.setStroke(Color.web("#141414"));line.setStrokeWidth(1.5);lightEffect = new Ellipse();lightEffect.setFill(Color.rgb(255, 255, 255, 0.7));lightEffect.setEffect(new BoxBlur(90, 90, 5));lightEffect.setCache(true);getChildren().setAll(frame, frame1, frame2, frame3, line, line1, lightEffect );}

节点大小的管理如下(无论如何,css方法都应做同样的事情)。

private void resize() {size = getWidth() < getHeight() ? getWidth() : getHeight();// frame.setPrefSize(size, size);frame.setRadius(size / 2.0);frame.setTranslateX(size / 2.0);frame.setTranslateY(size / 2.0);frame1.setRadius(frame1Ratio * size / 2.0);frame1.setTranslateX(size / 2.0);frame1.setTranslateY(size / 2.0);shadow.setOffsetX(size * shadowXOffset);shadow.setOffsetY(size * shadowYOffset);shadow.setRadius(size * shadowSizeOffset);shadow.setSpread(0.099);frame2.setRadius(frame2Ratio * size / 2.0);frame2.setTranslateX(size / 2.0);frame2.setTranslateY(size / 2.0);frame3.setRadius(frame3Ratio * size / 2.0);frame3.setTranslateX(size / 2.0);frame3.setTranslateY(size / 2.0);final double scaleRatio = size / initialSize;line1.setScaleX(scaleRatio);line1.setScaleY(scaleRatio);final double lineWidth = line1.getBoundsInLocal().getWidth();line1.setTranslateX(size / 2.0 - lineWidth / 2.0);line1.setTranslateY(size * 408.72054 / initialSize);line.setScaleX(scaleRatio);line.setScaleY(scaleRatio);line.setTranslateX(size / 2.0 - lineWidth / 2.0);line.setTranslateY(size * 410.08419 / initialSize);lightEffect.setRotate(lightEffectRotate);lightEffect.setTranslateX(lightEffectXRatio * size);lightEffect.setTranslateY(lightEffectYRatio * size);lightEffect.setRadiusX(lightEffectXRadiusRatio * size);lightEffect.setRadiusY(lightEffectYRadiusRatio * size);}

下一步将是混合两种方法,为用户提供两种工作方法。 一个人将能够使用css方法来自定义Nest表示形式,其他人将能够使用良好的代码API方法。 这将使我看到对代码有什么影响(是否沉重或不同时使用这两种方法),以及在进一步简化代码之前是否在css和代码API之间做出选择。

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

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

javafx 自定义控件

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

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

相关文章

【渝粤教育】国家开放大学2018年春季 8625-21T老年心理健康 参考试题

编号&#xff1a;8625 座位号 2017&#xff5e;2018学年度第二学期期末考试 老年心理健康试题 2018年7月 一、名词解释&#xff08;本大题共6小题&#xff0c;每题5分&#xff0c;共30分&#xff09; 分神&#xff1a; 选择性思维迟滞&#xff1a; 记忆减退&#xff1a; 注…

【渝粤教育】国家开放大学2018年春季 8659-22T计算机平面设计(1)(2) 参考试题

编号&#xff1a;8659 2017&#xff0d;2018学年度第二学期期末考试 计算机平面设计&#xff08;1&#xff09;&#xff08;2&#xff09; 试题 2018年5月 一、单项选择题&#xff08;共 10 小题&#xff0c;每小题4分&#xff0c;共 40 分&#xff09; 当使用绘图工具时&…

java开发事故如何处理_记一次缓存事故

善于总结&#xff0c;才能更快进步通常&#xff0c;我们队高并发的数据都会进行缓存&#xff0c;而且为了防止缓存过大&#xff0c;通常我们都会把缓存设置一个超时时间&#xff0c;并且会有cache miss机制。本文&#xff0c;我记录一下错误的缓存机制引起的BUG。起因好好的一个…

导轨式网管型工业交换机优势具体在哪里呢?

通过之前的介绍&#xff0c;我们了解到工业交换机可以分为导轨式和机架式、网管型和非网管型结构&#xff0c;那么&#xff0c;导轨式网管型工业交换机具体有哪些优势呢&#xff1f;接下来就由杭州飞畅科技的小编带大家详细了解一下 &#xff0c;一起来看看吧&#xff01; 工业…

使用HTTPS和OAuth 2.0保护服务到服务的Spring微服务

“我喜欢编写身份验证和授权代码。” 〜从来没有Java开发人员。 厌倦了一次又一次地建立相同的登录屏幕&#xff1f; 尝试使用Okta API进行托管身份验证&#xff0c;授权和多因素身份验证。 如果您使用Spring Boot&#xff0c;Spring Cloud和Spring Cloud Config&#xff0c;则…

【渝粤教育】国家开放大学2018年秋季 0017-22T大学英语 参考试题

科目编号&#xff1a;0033 座位号 2018-2019学年度第一学期期末考试 工程数学 试题 2018年 11 月 单选题&#xff08;本大题共10小题&#xff0c;每小题4分&#xff0c;共计40分&#xff09; 1&#xff0e;设都是阶矩阵&#xff0c;则下列命题正确的是&#xff08; &#xff…

【渝粤教育】国家开放大学2018年秋季 0107-21T现代货币金融学 参考试题

科目编号&#xff1a;0133 座位号 2018-2019学年度第一学期期末考试 大学物理 试题 2018年 11 月 单选题&#xff08;本大题共5小题&#xff0c;每小题4分&#xff0c;共计20分&#xff09; 静电场的高斯定理表明&#xff0c;静电场是 。 A. 有源场 B. 无源场 C. 保守力场 D.…

java session 同步_session同步

对于大型分布式网站来说&#xff0c;一个业务后面往往对应着多台服务器。用户的请求将在不同的服务器之间进行跳转&#xff0c;这样的情形下&#xff0c;我们就需要保持session在不同服务器之间的同步。1、基于数据库的session共享。原理&#xff1a;使用数据库专门用来存储ses…

二层网络和三层网络的区别

大家经常可以听到二层网络、三层网络的说法&#xff0c;我们这里提到的二层、三层是按照逻辑拓扑结构进行的分类&#xff0c;并不是ISO七层模型中的数据链路层和网络层&#xff0c;而是指核心层、汇聚层和接入层。这三层都部署的就是三层网络结构&#xff0c;二层网络结构没有汇…

从外部CorDapp扩展和覆盖流

Corda 4于上周&#xff08;2月21日&#xff09;发布&#xff0c;带来了大量的新功能&#xff0c;使Corda的使用更加愉快。 老实说&#xff0c;我有点假设有很多新功能。 我快速浏览了变更日志&#xff0c;主要是看到我的贡献被引用&#xff0c;但是我记得看到很多文本行。 那一…

【渝粤教育】国家开放大学2018年秋季 0233-21T学前儿童语言教育 参考试题

科目编号&#xff1a;0248 座位号 2018-2019学年度第一学期期末考试 电工电子技术 试题 2019年 1月 一、填空题&#xff08;每小题 6 分 &#xff0c;共计30 分&#xff09; 1.电压是衡量电场力______________ 的物理量&#xff0c;它在数量上等于单位正电荷受电场力作用从电…

工业级光纤收发器的单多模光纤?单多光模块及其用法?

光纤收发器按在光纤中的传输模式可分为&#xff1a;单模光纤和多模光纤&#xff0c;单模光纤收发器和多模光纤收发器最根本的区别就是传输距离远近。今天&#xff0c;就由飞畅科技的小编来为大家介绍下工业级光纤收发器的单/多模光纤的区别&#xff1f;单/多光模块的区别及其应…

【渝粤教育】国家开放大学2018年秋季 0299-21T中国古代文学(1) 参考试题

科目编号&#xff1a;[0314] 座位号 2018-2019学年度第一学期期末考试 兽医基础 试题 2018年 11 月 一、名词解释&#xff08;本大题共5小题&#xff0c;每小题4分&#xff0c;共计20分&#xff09; 1&#xff0e;萎缩 2&#xff0e;动脉性充血 3&#xff0e;黄疸 4&#x…

java ee13_一口气了解多线程及其Java实现

进程&#xff1a;进程就是应用程序在内存中分配的空间&#xff0c;也就是正在运行的程序&#xff0c;各个进程之间不干扰。同时进程保存着程序每一个时刻运行的状态。程序&#xff1a;用某种编程语言(java、python等)编写&#xff0c;能够完成一定任务或者功能的代码集合&#…

apache camel_Apache Camel中的断路器模式

apache camel骆驼通常在分布式环境中用于访问远程资源。 远程服务可能由于各种原因和期间而失败。 对于短时间后暂时不可用且可恢复的服务&#xff0c;重试策略可能会有所帮助。 但是某些服务可能会失败或挂起更长时间&#xff0c;从而使调用应用程序无响应且速度缓慢。 防止级…

【渝粤教育】国家开放大学2018年秋季 0505-22T护理学基础 参考试题

科目编号&#xff1a;0529 座位号&#xff1a; 四川电大2018─2019学年度第一学期期末考试 高级英语阅读&#xff08;1&#xff09;试题 &#xff08;开卷&#xff09; 2019年1月 注 意 事 项 一、 将你的准考证号、学生证号、姓名及分校&#xff08;工作站&#xff09;名称填写…

工业级交换机大致可以分为哪几类?

交换机的用途是非常广泛的&#xff0c;可以这样说&#xff0c;只要是需要联网的地方&#xff0c;基本上都会和交换机相关。我们一般把交换机的使用大致为商用和工业级&#xff0c;商用基本上在公司、单位的办公使用比较常见&#xff0c;今天飞畅科技着重为大家介绍一下工业级交…

【渝粤教育】国家开放大学2018年秋季 0630-22T环境法学 参考试题

科目编号&#xff1a;0633 座位号&#xff1a; 2018-2019学年度第一学期期末考试 化工CAD试题 2019年1月 一、试题一&#xff08;本题50分&#xff09; 设置绘图环境并绘制如下图框标题栏并保存。 二、试题二&#xff08;本题50分&#xff09; 调用图框绘一个平面图形标注…

使用MicroProfile应用隔板和背压

我录制了一段视频&#xff0c;介绍如何使用MicroProfile Fault Tolerance实现隔板和背压。 隔板后面的想法是将应用程序分成几个隔离功能的执行单元。 在企业Java应用程序中&#xff0c;这通常意味着定义多个线程池。 向客户端施加反压将导致向客户端添加有关系统当前压力的信…

【渝粤教育】国家开放大学2018年秋季 0695-21T (1)农业企业经营管理 参考试题

科目编号&#xff1a;[0700] 2018-2019学年度第一学期期末考试 中级会计实务&#xff08;一&#xff09; 评分标准 2019年 1 月 以下给出的是参考答案&#xff0c;请酌情给分。 一、单选题&#xff08;本大题共10小题&#xff0c;每小题3分&#xff0c;共计30分&#xff09; 1…