JavaFX实际应用程序:AISO HRC-Matic

“ Real-World JavaFX Apps”系列中的第三个应用程序是一种重型数据输入应用程序,由称为HRC-Matic的关系数据库支持。 它是由AISO在日内瓦开发的。 AISO是一家专门开发基于JavaFX的业务应用程序的公司。 他们还在研究我在本系列的第一个博客( 欧洲广播联盟 )中介绍的应用程序。

瑞士当局使用HRC-Matic来注册企业(所有权,法律地位,资金,联系人)。 该应用程序将在安装它的每个州中被大约20个用户使用。 该软件目前正在纳沙泰尔,日内瓦,沃州和弗里堡地区进行最后批准阶段。

下图显示了应用程序呈现给用户的各种形式。 如您所见,这全部与数据输入有关。

日内瓦注册表– AISO本身的条目

日内瓦注册表– AISO本身的条目

值列表框(LOV)的实际应用

值列表框(LOV)的实际应用

JEntityFX数据表,用于快速输入数据

JEntityFX数据表,用于快速输入数据

复杂表格/基于标签的导航

复杂表格/基于标签的导航

该项目面临的最大挑战是表格视图的局限性以及对键盘导航的总体支持。 我被聘为HRC-Matic项目的顾问,并且对使键盘导航顺利进行(尤其是与表格视图结合使用)所做的努力有很多见识。

对于用于快速,大量数据输入的应用程序,用户必须能够高效,快速地输入数据(尽可能少的鼠标交互和键盘敲击),这一点至关重要。 对于表格视图,这意味着用户可以立即开始编辑表格单元,而无需双击它或先按空格键。

用户还应该能够轻松跳转到表的第一行或最后一行。 焦点处理需要是可配置的,以便按下最后一列中的tab键会导致同一行的第一列(如果需要,则显示下一行)以接收焦点。 我被指派自定义标准表视图,并最终成功了,但是要花费大量代码,大量专门知识以及很多摆弄才能达到该目标。

以下是AISO的Jean-Michel Verchere(主任)和ChristopheBédert(信息系统架构师)提供的访谈答案。

一般的问题

您的产品/项目的名称是什么?

产品的名称是HRC-Client,项目的名称是HRC-Matic。 HRC是和“R egistre杜Çommerce”德语和法语分别意为“egisterħandels R” HR和RC的组合。 “ Matic”是指寄存器中的任务自动化活动。

您的用户/客户是谁?

客户是加入该项目的日内瓦,沃州,纳沙泰尔和瑞士弗里堡州的商业登记册。

您的软件的目的是什么? 有什么好处?

HRC的目标是建立一个完整的解决方案,以协助管理瑞士商业登记的全部活动。 该软件用于管理公司注册,修改或注销的请求。 这些请求是由公司代表提出的。 可以通过Web应用程序在Internet上访问公司的公共信息。

该应用程序可以运行吗? 如果是的话,从什么时候开始。 如果不是,您打算什么时候上线?

该产品目前处于预生产阶段,并将于9月底在所有站点投入生产。

您的项目预算多少?

整个项目的总预算为180万美元。 对于HRC JavaFX客户本身,预算为100万美元。

发展历程

您是如何将必要的JavaFX专有技术带入您的团队的? (顾问,内部/外部培训课程)?

JavaFX专业知识是在内部建立的。 AISO已经在Java方面具有很强的技能,尤其是在Swing中。 AISO为Swing的发展开发了自己的内部框架,称为JEntity。 随着JavaFX的到来,设计了一个新的框架:JEntityFX。 Dirk Lemmermann向该框架提供了他的外部视野和出色的框架专业知识。

您是从哪个版本的JavaFX开始的? 一二八

最初,该项目是用Swing编写的。 在开发的开始,发布了JavaFX版本2,并切换到JavaFX。 今天,该应用程序已适应JavaFX 8。

您何时开始开发该应用程序,它花了多长时间?

开发于2012年底开始,历时3年。

有多少开发人员从事此工作? 总体上和在用户界面上。

核心团队由2个开发人员组成。 其他开发人员有时也为UI和其他模块做出了贡献。

应用程序有多大? 代码行,类数。

旧的应用程序大约有210个屏幕。 使用JavaFX,应用程序UI可以响应分组,简化和通用的屏幕。 因此,该应用程序包含约60个屏幕,这些屏幕具有许多主/从关系,并具有数据库中的约110个关联表。

JavaFX客户端有多大? 代码行,类数。

170'000线,3'074班

您为什么选择JavaFX作为前端技术? 非常重要的一点:为什么不选择HTML / Web?

客户需要真正的可持续性(8至12年)。 先前实现的开发始于1992年,并于2007年结束。必须能够提供与先前版本相同的功能和行为。 JavaFX的唯一替代品是Microsoft .Net。

由于以下原因,排除了Web技术:

  • 无法保证可持续性。
  • 短期技术生命周期。
  • 低性能风险。
  • 客户使用的各种Web浏览器存在兼容性风险。
  • 由于网络技术的变化而导致的升级费用。

说服决策者同意JavaFX难吗?

最初,该项目应该是用Swing编写的。 我们必须说服我们的客户,主要是所涉及的IT部门,他们担心JavaFX对于这种类型的应用程序不够稳定。

您在JavaFX部分面临的最大挑战/问题/问题/错误是什么,您如何解决它们?

键盘导航:在整个应用程序中,键盘导航和实现标准键功能存在很多问题。 这个想法是要有一个使用最少的鼠标就可以使用的应用程序。 若要解决此问题,我们必须用自己的控件来替换受影响的控件EventDispatcher。

可编辑的TableView:我们必须重写标准TableView并重写焦点系统,因为从用户体验的角度来看,标准的可编辑TableView无法正常工作。

您使用了哪些第三方产品/框架/工具(开源和商业),为什么选择它们?

我们内部的JavaFX框架JEntityFX(尚未发布)。

您是否混合了JavaFX和Swing代码?

没有

外表

您会在下一个项目中再次使用JavaFX吗? 请详细说明原因或原因。 您对其他公司/项目的JavaFX有哪些建议?

是。 JavaFX没有限制。 我们已经开发了自己的专业业务应用程序框架,该框架将用于将来的所有富客户端应用程序。

必须有一个框架来结构化和工业化JavaFX开发。

这使我们能够专注于应用程序的功能方面以及对用户具有高附加值的特定组件的开发。

您希望将哪些功能添加到JavaFX?

在可编辑模式下重做TableView。

您打算提供移动版本的应用程序还是移动附件?

不,不是在不久的将来,但是我们正在为将来的项目考虑这一点。

翻译自: https://www.javacodegeeks.com/2015/09/javafx-real-world-apps-aiso-hrc-matic.html

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

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

相关文章

Feather包实现数据框快速读写,你值得拥有

什么是Feather? Feature是一种文件格式,支持R语言和Python的交互式存储,速度更快。目前支持R语言的data.frame和Python pandas 的DataFrame。 Feather收到了Apache arrow 项目的支持,Apache Arrow是Apache基金会下一个全新的开源项…

一文教你学会需求分析与管理

大家好,我是孙叫兽,本期给大家分享需求分析与管理,在项目开始或者需求整理时,这方面的知识显得尤为重要,常言道:良好的开始是成功的一半! 1.需求的定义 产品需求是在一定的时期,一定的场景中,无论是心理上还是生理上的,用户有着某种“需要”,这种“需要”用户自己不…

java 编写代码_Java 7:如何编写非常快速的Java代码

java 编写代码当我第一次写此博客时,我的目的是向您介绍ThreadLocalRandom类,它是Java 7中新增的用于生成随机数的类。 我在一系列微基准测试中分析了ThreadLocalRandom的性能,以了解其在单线程环境中的性能。 结果相对令人惊讶:尽…

POJ 1172 DFS

&#xff08;感谢wzc学长的幻灯片&#xff09; 单组数据 注意从必经点能到标记过的点则此点不是分裂点。 //By: Sirius_Ren #include <cstdio> #include <queue> #include <cstring> using namespace std; int tot1,first[51],cnt,v[101],nxt[101],n,vis[51…

文件夹或者文件比对工具 Beyond Compare

文件夹或者文件比对工具 Beyond Compare 之前有同事离职了。 没有工作交接。 同事的代码有一部分也没有提交版本库。 结果就是线上的代码和版本库中的文件数量和代码内容不一致。 这时就需要进行两方比对&#xff0c;查找不一致的地方。 如果人工…

Lucene查询(搜索)语法示例

本文是我们名为“ Apache Lucene基础知识 ”的学院课程的一部分。 在本课程中&#xff0c;您将了解Lucene。 您将了解为什么这样的库很重要&#xff0c;然后了解Lucene中搜索的工作方式。 此外&#xff0c;您将学习如何将Lucene Search集成到您自己的应用程序中&#xff0c;以…

远程桌面在自己电脑显示很小的解决办法

背景:最近在某银行办公,使用的是云桌面,疫情期间有一周是在加班办公,使用自己的电脑登录云桌面,然后电脑屏幕显示云桌面很小,看文档及代码十分难受。问问同事,这个问题终于得到了解决。 显示如下: 这个云桌面在我电脑就显示2/3宽度的大小,看代码太难受了,排除右上角向…

《JavaScript100例|01》之javaScript实现俄罗斯方块,唤起了女朋友儿时的回忆!

导读&#xff1a;小时候我们经常打游戏玩俄罗斯方块&#xff0c;用的是游戏机。 现在我们学会了敲代码&#xff0c;简单用JS实现一下这个游戏把。 目录 先看效果 操作说明 代码实现 完整代码 先看效果 操作说明 打开编译器&#xff0c;讲代码复制进去&#xff0c;在浏览…

JBOSS内存溢出处理

JBOSS内存溢出处理 前几天公司一个项目的服务器坏了&#xff0c;就换了一个备份服务器顶替一下&#xff0c;但是没有跑一会就宕机了&#xff0c;一直报java.lang.OutOfMemoryError。。。。一看到这里&#xff0c;就知道是内存溢出&#xff0c;但是JBoss的内存配置已经达到1024M…

linux命令之seq

seq命令简述 seq命令比较常用&#xff0c;在需要做循环的时候用于产生一个序列是再合适不过的工具了&#xff0c;常用方法也比较简单&#xff1a;Usage:seq [OPTION]... LASTseq [OPTION]... FIRST LASTseq [OPTION]... FIRST INCREMENT LASTPrint numbers from FIRST to LAST,…

史上最全高级Java教程总结版(强烈建议收藏)

本篇文章主要用于分享java相关的视频,课程等,涉及面比较广,建议先收藏再慢慢观看,信息量比较大。适合新手,老手各阶段Java程序员。 订阅本专栏 《高级java教程系列》 的福利! 目录 java知识体系列表 面试题库 java各知识点综合面试题

adf4351使用_ADF:将UI类别与动态表单一起使用

adf4351使用JDev 11g R2具有有趣的新功能“ UI类别”。 它使我们可以在视图对象定义级别上以声明方式对VO的属性进行分组。 例如&#xff0c;我的VEmployees视图对象的“ UI Categories”选项卡如下所示&#xff1a; 默认情况下&#xff0c;每个视图对象都有一个预定义的类别“…

使用JavaScript将小写金额转化为大写金额的两种常见方法

导读:在一些支付或者银行确认信息中经常需要将小写金额转换为大写金额,这里做一下归纳, 目录 效果图: 方法一:使用正则表达式 方法二:常规JavaScript实现 效果图: 前面小写,后面大写,这里使用vue测试,其它框架同理.小写是传值的字段money,大写直接调用函数dealBigMoney(money…

h5-列表

<header> <!-- a,div,header,span {-webkit-tap-highlight-color: rgba(255, 255, 255, 0); /*修改a、input和button点击时的蓝色外边框和灰色半透明背景*/ } --><div class"header"> <!-- .header {height: 44px;background: #ff8200;position…

什么是突变测试?

最近&#xff0c;我反复提到“ 突变测试 ”一词。 因为可以说这种方法能够以超出代码覆盖范围的方式检测测试安全网的空白&#xff0c;所以我花了一些时间来追赶这个话题&#xff0c;然后尝试一下。 这篇文章总结了我的发现&#xff0c;作为对该主题的快速介绍。 什么是变异测…

JavaScript数组常用的方法总结

导读&#xff1a;在实际开发中&#xff0c;前端工程师除了写页面布局及样式还要对后端返回的数据进行处理&#xff0c;返回的数据大多数是json格式&#xff0c;一般都是返回一个对象或者数组&#xff0c;下面对常用的数组的使用方法进行总结&#xff0c;方便在开发中手到擒来&a…

Python黑魔法,一行实现并行化

Python 在程序并行化方面多少有些声名狼藉。撇开技术上的问题&#xff0c;例如线程的实现和 GIL&#xff0c;我觉得错误的教学指导才是主要问题。常见的经典 Python 多线程、多进程教程多显得偏“重”。而且往往隔靴搔痒&#xff0c;没有深入探讨日常工作中最有用的内容。 传统…

javaScript对账号卡号进行脱敏处理

导读&#xff1a;一般8位以上账号&#xff0c;显示首尾各4位&#xff0c;中间固定用8位*代替&#xff1b;8位及以下账号&#xff0c;显示首尾各2位&#xff0c;中间固定用8位*代替。 这里简单处理一下16位及以上的账号&#xff0c;卡号&#xff0c;其它的情况同理&#xff0c; …

2. python 参数个数可变的函数

如果想要定义一个参数个数不确定的函数&#xff0c; 可以通过*args,**kwargs实现&#xff1a; *args的使用&#xff1a; **kwargs的使用&#xff1a; 二者的混合使用&#xff1a; 另外还有一些关于调用函数时候的时候常用的技巧&#xff1a; 其和是等价的。 其和是等价的 当然也…