Java,JavaFX的流畅设计风格进度栏

按照承诺,刚刚发布的Java JavaFX主题JMetro 4.6版为进度栏带来了新样式。

进度栏有两种可能的状态:确定和不确定,新的JMetro版本具有这两种状态。 在本文中,我还将详细介绍一些我在JMetro中遵守的API设计原则。

JMetro API设计原则

关于JMetro的API,我有一些原则。 其中之一是它应要求最少的设置并具有最少的必需API。 这意味着,例如,仅需很少的方法调用,就可以将JMetro应用为主题。 现在,只需要这两行代码(可以很容易地折叠为一行):

JMetro jMetro = new JMetro(Style.LIGHT);
jMetro.applyTheme(root);

这也意味着我尝试不引入新控件,除非应该绝对引入它们。 例如,使用新的文本字段和密码字段样式,我可以引入新的控件,因为这两个控件都添加了新功能,例如清除和显示密码按钮。 相反,我选择通过引入可以在原始控件中使用的新外观类来添加这些新功能。

这种方法有两个优点:

  • 开发人员可以轻松更改主题。 从JMetro到另一个主题,反之亦然。 由于JMetro仅在严格必要时才引入新控件,因此与JMetro没有强耦合。 例如,您可能决定在移动设备上或在不同的OS上使用不同的主题,或者只是您决定不再使用JMetro。 使用JMetro非常简单。
  • 学习曲线浅。 开始使用JMetro应该真的很容易。 至少,您需要知道的是配置和应用JMetro的两行代码。 大多数控件已经在JavaFX SDK中。 在后台将新外观应用于这些控件。

您还可以通过CSS属性配置大多数控件的新外观,从而使您可以继续使用与以前相同的Java代码(不使用JMetro时)。 将来,我可能会添加新的API以通过代码(例如Java代码)配置这些功能,但我仍计划保留所需的最少API。

旧的JMetro进度栏

像往常一样,我首先要展示进度条在以前版本中的外观:

进度条

ProgressBar旧的JMetro轻主题

进度条

ProgressBar旧的JMetro黑暗主题

这是用于确定状态的简单平面设计样式。 在旧版本中,不确定状态没有样式。

新的JMetro进度栏

在继续显示新的进度栏外观之前,我想解释为什么存在两种可能的状态。 当您可以确定地确定特定任务已取得多少进展时,您将使用确定状态。 在这种状态下,您将显示已完成了多少进度。 进度量取决于进度栏的“填充”程度。 当任务即将完成时,进度栏将“被填充”或几乎“被填充”。

相反,当您无法确定已完成的进度或由于某种原因而不想计算进度时,可以将状态设置为不确定。 这不会显示已取得多少进展。 但这至少会表明正在进行一些计算。

受Fluent Design的启发,您可以在下面看到进度栏的新样式。 现在,两个新的不同外观代表了这两个状态。 自从我在Twitter上的最后一篇文章以来,我对不确定的动画进行了一些调整。

进度条

ProgressBar新的JMetro主题

上面的动画可能看起来不像实时版本那样流畅 。 我没有时间发布视频而不是GIF。 那可能会更好地证明实际结果。

深色和浅色版本之间没有区别。

进度栏详细信息

我试图使新进度条CSS样式与原始JavaFX Modena CSS尽可能相似。 您仍然可以找到“ track ”和“ bar ” CSS样式类,您可以对其进行样式设置,就像在Modena样式表中一样。 对于不确定状态,这是不可能的,因为外观完全不同。

对于不确定状态,每个“点”都是一个具有样式类的Regiondotdot_<number> 。 <Number>是点的位置,从1开始。您可以根据需要设置每个“点”的样式,因为每个点都是一个Region

例如,如果您希望点逐渐变暗,则可以添加以下CSS:

.progress-bar:indeterminate .dot_1 {-fx-background-color: ACCENT_COLOR;
}.progress-bar:indeterminate .dot_2 {-fx-background-color: derive(ACCENT_COLOR, -15%);
}.progress-bar:indeterminate .dot_3 {-fx-background-color: derive(ACCENT_COLOR, -30%);
}.progress-bar:indeterminate .dot_4 {-fx-background-color: derive(ACCENT_COLOR, -45%);
}.progress-bar:indeterminate .dot_5 {-fx-background-color: derive(ACCENT_COLOR, -60%);
}

ACCENT_COLOR是JMetro中定义的JavaFX CSS变量,用于指定JMetro主题的强调色。 derive(..)是一个JavaFX CSS帮助器函数,根据传入的百分比是负数还是正数,它可以使给定的颜色变暗或变亮。

此示例将给出以下结果:

进度条

结论

在JMetro 4.6版中,为进度栏添加了新样式。 在这篇文章中,我还概述了JMetro背后的一些设计原则。

像以前一样,您可以在JavaFX主题JMetro页面上查看更新的文档(将很快用此新版本更新)。

JMetro即将达到版本5.0。 我计划在第5版之前添加的所有最困难的控件都已完成。 在接下来的几个发行版中,我计划清理,重新调整某些样式,并增加指定控件的强调颜色的可能性。 在此之前,我可能还可以添加新的控件样式。 Ahh ..并在Maven Central中提供JMetro。

翻译自: https://www.javacodegeeks.com/2018/10/fluent-design-style-progress-bar-javafx.html

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

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

相关文章

安卓最新系统_成纺移动校园(移动办公系统)V3.2.1 安卓最新版

成纺移动校园(移动办公系统)是额一个非常实用的办公工具。您可以使用该软件及时浏览最新的校园信息&#xff0c;同时涵盖许多功能&#xff0c;例如时间表查询&#xff0c;会议安排&#xff0c;校园地图&#xff0c;校车等。有需要的用户欢迎来绿色先锋网下载。 成纺移动校园简介…

java时间日期格式器_JAVA基础类库(二)-----日期、时间类和格式器

Date类public classDateTest{public static voidmain(String[] args){Date d1 newDate();//获取当前时间之后100ms的时间Date d2 new Date(System.currentTimeMillis() 10000);System.out.println(d1);System.out.println(d2);//比较d1,d2是否相等,相等返回0&#xff0c;大于…

pyqt 获取 UI 中组件_你想知道的React组件设计模式这里都有(上)

本文梳理了容器与展示组件、高阶组件、render props这三类React组件设计模式往期回顾&#xff1a;HBaseCon Asia 2019 Track 3 概要回顾随着 React 的发展&#xff0c;各种组件设计模式层出不穷。React 官方文档也有不少相关文章&#xff0c;但是组织稍显凌乱&#xff0c;本文就…

jvm上的随机数与熵_向您的JVM添加一些熵

jvm上的随机数与熵能否生成真正的随机数取决于系统中的熵。 有人声称&#xff0c;这可以通过掷骰子来保证。 其他人认为&#xff0c;用此主体替换OpenJDK的java.math.Random.nextInt&#xff08;&#xff09;方法将有所帮助&#xff1a; public int nextInt() {return 14; }资…

typora导出word指定样式_(二)最简洁的Markdowd编辑器:Typora

&#xff08;提醒&#xff1a;前面都是介绍和语法&#xff0c;想下载了就能用的直接看最后总结&#xff09;大家好&#xff0c;半瓶醋同学又来误人子弟了。现在办公文档或者邮件的处理&#xff0c;一般都是用微软的office word或者邮件自带的编辑器。但是用word或者邮件自带编辑…

cc java开发环境搭建_Windows系统下java开发环境搭建

总的来说&#xff0c;开发环境是程序员工作的基础&#xff0c;没了他&#xff0c;IT工作就没得开展了。话不多说&#xff0c;今天提供的教程是Windows系统下Java开发环境的搭建&#xff0c;具体如下1.下载并安装JDK(JAVA Development Kit)JDK是整个java开发的核心&#xff0c;它…

使用数据库中的Java流制作数据透视表

来自数据库行和表的原始数据不能为人类读者提供太多了解。 相反&#xff0c;如果我们对数据执行某种聚合&#xff0c;则人类更有可能看到数据模式 在展示给我们之前。 数据透视表是聚合的一种特定形式&#xff0c;我们可以在其中应用排序&#xff0c;求平均值或求和之类的操作…

java map的keyset_Java Map keySet()用法及代码示例

此方法用于返回此映射中包含的键的Set视图。该集合由Map支持&#xff0c;因此对Map的更改会反映在集合中&#xff0c;反之亦然。用法:Set keySet()参数&#xff1a;此方法没有参数。返回值&#xff1a;此方法返回一个包含指定映射键的集合。下面的程序显示int keySet()方法的实…

asynchttpclient 超时_dnf这才是混子的毕业套装,却发现超时空漩涡不买账!

dnf这才是混子的毕业套装&#xff0c;却发现超时空漩涡不买账&#xff01;按道理来说&#xff0c;光兵和帕拉丁穿这套装备去混团是最好的&#xff0c;结果现在超时空漩涡不要&#xff01;虽然说兵法套是95最好的魂之涛&#xff0c;但是这个混子套属性真心弱爆&#xff0c;不如正…

统计多维数组php_PHP多维数组中统计元素个数

Array([0] > Array([0] > Array([0] > Array([id] > 12[name] > 1)[1] > Array([id] > 28[name] > 2).....)[1] > Array([0] > Array([id] > 121[name] > 2)[1] > Array([id] > 281[name] > 4)...))....)我想统计name对应的值出现…

mongodb web_MongoDB和Web应用程序

mongodb web当今时代是数据以非常大的速度增长的时代。 数据存储不是问题&#xff0c;是的&#xff0c;但是它的结构化和存储方式可能会增加或减少所需数据块的查找时间。 不断增长的非结构化数据的用例 脸书&#xff1a; 活跃用户达7.5亿&#xff0c;互联网用户中有三分之一…

win7亮度怎么调_揭秘极米NEW Z8X投影仪怎么样?千万不要上当?!!!!【揭秘反馈

反馈测评极米NEW Z8X投影仪怎么样?求真实点评注意事项极米NEW Z8X投影仪怎么样?靠谱真实回答 外形外观&#xff1a;简约时尚大气&#xff0c;手感不错&#xff01;\n投影亮度&#xff1a;1080P、4K&#xff0c;都能做到&#xff01;\n投影色彩&#xff1a;非常好&#xff0c;…

php的完整代码块,简单测试了一下php中的代码块、内部类等知识

简单测试了一下php中的代码块、内部类等知识<?php class a{public $b;public function print_result(){//普通代码块&#xff0c;但已经不是java中的代码块{$c变量;echo 普通代码块&#xff1f;;}echo $c;}//错误的语法&#xff0c;Parse error: syntax error, unexpected …

Paw 百度ai_直面落地!百度EasyDL产业智能创新大赛成果覆盖能源、交通、水利民生重业...

物体检测模型实现高压线路隐患检测、图像分类实现短视频快速剪辑和量产、文本情感分类辅助潜在心理疾病患者自发检测、图片识别车辆轮轴数监管车辆载重……每一个创想都能简单快速实现&#xff0c;没有AI开发基础的小伙伴们也能做到&#xff01;这一切都缘于百度零门槛AI开发平…

Java 9、10及更高版本:Java平台的未来

您紧跟Java平台新功能的秘密武器 自去年9月发布Java 9以来&#xff0c;感觉整个平台都经历了重大变化。 在我们甚至无法确定Java 9所能提供的一切之前&#xff0c;我们已经在标记Java 10的发布。现在&#xff0c;我们已经开始期待Java 11在2018年9月发布。 Oracle决定为Java平…

php同时抢购 代码,浅谈PHP实现大流量下抢购方案

要求要有小时分钟秒的实时倒计时的显示&#xff0c;用户端修改日期时间不会影响到倒计时的正常显示(也就是以服务器时间为准)。其实这和很多的考试等系统的时间限制功能同样的要求。总不能用ajax每秒都获取服务器时间吧&#xff0c;所以实时倒计时一定要用javascript实现。这很…

c fread 快读 详解_奔驰ACC(自适应巡航系统)详解

什么是ACC自适应巡航&#xff1f;ACC自适应巡航( Adaptive Cruise Control )&#xff0c;又可称为智能巡航控制系统&#xff0c;简称ACC系统&#xff0c;它是在传统巡航控制基础上发展起来的新一代汽车驾驶员辅助驾驶系统。它将汽车自动巡航控制系统CCS 和车辆前向撞击报警系统…

php使用邮件找回密码,php利用Zend_Mail发送邮件(实现邮件重设密码功能)

[php]代码库<?php include_once conn/conn.php;require_once Zend/Mail.php;//调用发送邮件的文件require_once Zend/Mail/Transport/Smtp.php;//调用SMTP验证文件$reback 0;$name $_GET[foundname];$question $_GET[question];$answer $_GET[answer];$sql "sele…

_Linux 最常用命令整理,建议收藏!

Linux是目前应用最广泛的服务器操作系统&#xff0c;基于Unix&#xff0c;开源免费&#xff0c;由于系统的稳定性和安全性&#xff0c;市场占有率很高&#xff0c;几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码&#xff0c;还可以安装在各…

openjdk 使用_如何在OpenJDK中使用ECC

openjdk 使用曾经试图在Java和OpenJDK中使用椭圆曲线密码术 &#xff08;ECC&#xff09;的每个人要么被迫使用Bouncy Castle&#xff0c;要么被SunEC提供者弄糊涂了 。 SunEC提供程序根据文档 &#xff08;报价&#xff09;提供以下算法&#xff1a; AlgorithmParameters 欧…