基于java的用户界面布局方法、装置、电子设备及存储介质
文献发布时间:2024-01-17 01:15:20
技术领域
本发明涉及计算机技术领域,尤其涉及一种基于java的用户界面布局方法、装置、电子设备及存储介质。
背景技术
在Java技术中,使用Swing开发界面的程序员会发现,即使Swing提供了这么多布局管理器,但想通过这些布局管理器做出高复杂度或具有动态逻辑的界面却非常难。因为布局管理器非常依赖父容器和子组件的各种状态,尽管Swing的新版本提供了类似组件和容器间隔的方法,但还没有被大部分布局管理器采用,其实并不是布局管理器不够强大的问题,而事实上,很多专业的界面需要从组件级别做出良好的定义。
另外,不少Swing组件会根据容器的大小进行绘制,这也造成了很多不确定性,用户需要的是一个稳定的,可预知的界面。如果使用了GUI编辑器(如Eclipse的WindowBuilder Editor等),会发现界面在不同系统下的展示效果都有一些差异,格子布局等均不能如实显示,且当要实现复杂GUI设计时,独立的组件只能写死大小,要手动调节位置,这对于使用多平台的公司(同时使用Windows、Linux等)是非常不友好的,开发代码量较大,且不够直观,界面越复杂则后期越难维护,也无法实现动态布局,有时为了美观与工整只能把窗口大小固定,导致用户无法自由拉伸,用户查看表格等数据量大的组件时十分不便。
发明内容
本发明实施例的主要目的在于提出一种基于java的用户界面布局方法、装置、电子设备及存储介质,提高用户界面开发的实用性及可维护行,降低了开发成本。
本发明的一方面提供了一种基于java的用户界面布局方法,包括:
根据用户界面布局请求,创建并实例化第一用户界面模型,并对所述第一用户界面模型进行布局;
对所述第一用户界面模型添加第一组件,得到第二用户界面模型;
以所述第二用户界面模型进行界面布局,得到用户界面布局结果。
根据所述的基于java的用户界面布局方法,所述根据用户界面布局请求,创建并实例化第一用户界面模型,并对所述第一用户界面模型进行布局,包括:
根据所述用户界面布局请求,确定所述第一用户界面所包括的第一组件;
根据所述第一组件采用网格布局处理,所述网格布局处理包括对所述第一用户界面模型的长、宽及位置进行部署,并执行实例化处理。
根据所述的基于java的用户界面布局方法,还包括:
对多个所述第一模型的行间距或列间距中的至少一种进行设置。
根据所述的基于java的用户界面布局方法,其中对所述第一用户界面模型添加第一组件,得到第二用户界面模型包括:
添加水平放置、垂直放置及流式布局中的至少一种所述第一组件对所述第一用户模型进行填充,所述水平放置、所述垂直放置及所述流式布局中的至少一种所述第一组件均有对应的第二组件,所述第二组件用于对所述第一组件的拉伸度、对齐方式及边框中的至少一种进行动态设置。
根据所述的基于java的用户界面布局方法,其中第一组件还包括有所述第二用户界面模型。
根据所述的基于java的用户界面布局方法,其中以所述第二用户界面模型进行界面布局,得到布局结果,包括:
若所述第一组件包括有所述第二用户界面模型,获取多个所述第二用户界面模型的树形结构关系;
根据所述树形结构关系,从所述树形结构关系中最大深度的节点作为起始,以根节点作为终点对所述第二用户界面模型进行逐步实例化及填充,直至完成所述树形结构关系中所有节点的实例化及填充。
根据所述的基于java的用户界面布局方法,还包括:
通过动态逻辑对组件及所述第二用户界面模型的嵌套关系、位置、大小、外观进行自定义控制。
本发明实施例的另一方面提供了一种基于java的用户界面布局装置,包括:
第一模块,用于根据用户界面布局请求,创建并实例化第一用户界面模型,并对所述第一用户界面模型进行布局;
第二模块,用于对所述第一用户界面模型添加第一组件,得到第二用户界面模型;
第三模块,用于以所述第二用户界面模型进行界面布局,得到用户界面布局结果。
本发明实施例的另一方面提供了一种电子设备,包括处理器以及存储器;
所述存储器用于存储程序;
所述处理器执行所述程序实现如前文所描述的方法。
本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前文所描述的方法。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明实施例的基于java的用户界面布局方法的流程示意图。
图2是本发明实施例的用户界面模型布局流程示意图。
图3是本发明实施例的添加组件的流程示意图。
图4是本发明实施例的第一桌面应用界面示意图。
图5是本发明实施例的第一桌面应用的用户界面模型布局示意图。
图6是本发明实施例的第一桌面应用的用户界面模型嵌套流程示意图。
图7a及图7b是本发明实施例的第二桌面应用的两个子用户界面示意图。
图8a及图8b是本发明实施例的组件动态变化前后示意图。
图9是本发明实施例的基于java的用户界面布局装置图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元”的后缀仅为了有利于本发明的说明,其本身没有特有的意义。因此,“模块”、“部件”或“单元”可以混合地使用。“第一”、“第二”等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。在本后续的描述中,对方法步骤的连续标号是为了方便审查和理解,结合本发明的整体技术方案以及各个步骤之间的逻辑关系,调整步骤之间的实施顺序并不会影响本发明技术方案所达到的技术效果。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
示例性地,参考图1,其公开了基于java的用户界面布局方法的流程示意图,其包括但不限于步骤S100~S300:
S100,根据用户界面布局请求,创建并实例化第一用户界面模型,并对第一用户界面模型进行布局。
在一些实施例中,可以理解的是,其中的第一用户界面模型为界面初始架构;
在一些实施例中,参考如图2所示的第一用户界面模型布局流程示意图,其包括但不限于步骤S110~S120:
S110,根据用户界面布局请求,确定第一用户界面所包括的第一组件;
可以理解的是,通过户界面布局请求,确定整体布局的第一用户界面模型,以及,第一用户界面模型中所包括的第一组件,例如,用户界面模型pl,包括有2个按钮及1个文本框。
在一些实施例中,其中的第一组件可以是指用户界面的功能组件,例如文本框、按钮、表格、选择框等;
S120,根据第一组件采用网格布局处理,网格布局处理包括对第一用户界面模型的长、宽及位置进行部署,并执行实例化处理。
在一些实施例中,对第一用户界面模型进行实例化是用于对其进行的布局参数进行实例化,例如,一种实例化方式为:PageLayout变量(下文统称pl)=new PageLayout(Jpanel组件)或PageLayout变量(下文简称pl)=new PageLayout(Jpanel组件,列数),其中的PageLayout变量即为用户界面模型,Jpanel组件表示预计填充的组件,列数表示其中待填充组件的列数;
S200,对第一用户界面模型添加第一组件,得到第二用户界面模型。
在一些实施例中,在第一用户模型被实例化之后,可以通过网格袋布局管理器GridBagLayout对组件或用户模型进行布局。
在一些实施例中,本发明的技术方案还可以对多个第一用户模型进行行间距或列间距的设置,例如通过“pl.setSpacing(int rowSpacing,int colSpacing)”方法设置模型的行间距或列间距,当此方法没有被应用时,默认间距均是5。
在一些实施例中,参考图3所示的添加组件的流程示意图,其包括但不限于步骤S210:
S210,添加水平放置、垂直放置及流式布局中的至少一种第一组件对第一用户模型进行填充。
在一些实施例中,为了实现组件的动态变化,在水平放置、垂直放置及流式布局中的至少一种第一组件均有对应的第二组件,第二组件用于对第一组件的拉伸度、对齐方式及边框中的至少一种进行动态设置。
示例性地,参考图4所示的桌面应用界面图,本实施例实现添加组件的方式如下(1)~(8)所示:
(1)pl.addHorizontal(Component...cs):加入需要水平放置的组件。
(2)pl.addHorizontal(int emptyCol,Component...cs):加入需要水平放置的组件(带参数“左方格子占位数,模型自动使用透明的JLabel进行占位”)。
(3)pl.addHorizontal(PageLayoutComponent...cs):加入需要水平放置的PageLayoutComponent组件。普通组件可以通过嵌入PageLayoutComponent组件来控制组件的自由拉伸。
(4)pl.addHorizontal(int emptyCol,PageLayoutComponent...cs):加入需要水平放置的PageLayoutComponent组件。普通组件可以通过嵌入PageLayoutComponent组件来控制组件的自由拉伸(带参数“左方格子占位数,模型自动使用透明的JLabel进行占位”)。
(5)pl.addVertical(Component component):加入需要垂直放置的组件
(6)pl.addVertical(PageLayoutComponent c):加入需要垂直放置的PageLayoutComponent组件。普通组件可以通过嵌入PageLayoutComponent组件来控制组件的自由拉伸。
(7)pl.addFlowHorizontal(Component...cs):加入需要水平Flow布局的组件。此方法会自动引用FlowLayout进行行布局。
(8)pl.addFlowHorizontal(int alignment,Border border,Component...cs):加入需要水平Flow布局的组件。此方法会自动引用FlowLayout进行行布局。(带参数“对齐方式:左对齐、居中、右对齐”、“边框:普通Java组件边框均可使用,例如TitledBorder”)。
在一些实施例中,还可以将已填充组件的用户界面模型作为组件进行填充,以实现组件与用户界面模型的嵌套,可以理解的是,这种嵌套方式可以自定义设置,例如,可以先实例化模型后加入组件以形成一个单独界面,然后将此模型当作一个组件嵌套入另一个该模型中,可以此实现支持任意逻辑的无限嵌套。
在一些实施例中,如果组件中包括有用户界面模型,则通过对用户界面模型进行透明占位的方式进行实例化处理。
在一些实施例中,其中图5所示的用户界面模型布局示意图,其为图4所示的桌面应用界面图布局,其先分别使用模型pl1与模型pl3制成最小模块,此2个最小模块再嵌套入模型pl2中形成单列界面,最后将模型pl2继续嵌套入模型pl中。
在一些实施例中,参考图6,其为图5的用户界面模型嵌套流程示意图,其包括但不限于步骤S211~S213:
S211,实例化模型pl1、pl3,并填充相应组件;
S212,实例化模型pl2,并将模型pl1、pl3作为组件进行填充;
S213,实例化模型pl,将模型pl2作为组件进行填充。
可以理解的是,本发明的实施例对于存在嵌套关系的用户界面模型时,获取pl、pl1、pl2、pl3的树形结构关系,其最大深度N=3,其中pl(N1)为根节点、pl2(N2)为pl的子节点,pl1(N3)、pl(N3)为pl2(N2)的子节点,因此,技术此树形结构关系,首先对pl1(N3)、pl(N3)进行填充组件及实例化,然后将pl1(N3)、pl(N3)作为组件进行填充,并对pl2(N2)进行实例化,最后以pl包括的组件及pl2(N2)作为填充,并完成实例化处理。
在一些实施例中,参考图7a及7b的第二桌面应用界面示意图,其分别表示具有一个总用户界面模型及七个子用户界面模型的其中两个。
在一些实施例中,参考图7a及图7b,其界面布局流程先分别使用模型jp1-7组成小模块,然后将这些模块嵌套入模型jp中,即先实例化总用户界面模型,再使用方法addFlowHorizontal将七个子用户界面模型作为组件加入模型中。
S300,以第二用户界面模型进行界面布局,得到用户界面布局结果。
在一些实施例中,通过动态逻辑对组件及第二用户界面模型的嵌套关系、位置、大小、外观进行自定义控制。
示例性地,参考图8a及图8b所示的组件动态变化前后示意图,其示例了其中的组件进行动态逻辑处理后的示意图,即通过调整用户界面的嵌套关系、模型及组件的位置、大小、外观,以实现动态的用户界面布局。
根据本发明所示的实施例,本发明的技术方案至少具备以下有益效果:在GUI布局中更加简便地创造窗体,而且组件与布局分离的写法可以使代码更加直观,后期更便于维护;对于动态布局也有更高的实用性,可以通过循环等逻辑实现可变的GUI窗体。支持无限嵌套,能实现极高复杂度的窗体设计,同时代码也能保持很好的可读性。一个软件的生命周期中,80%的花费在于维护,代码可读性越高则金钱成本和时间成本越低,可以有效让程序员迅速地理解新的设计和代码,既降低了维护成本,也提高了工作效率。
如图9所示,本发明实施例还提供了一种基于java的用户界面布局装置,该装置包括了第一模块901、第二模块902及第三模块9039;
其中,第一模块,用于根据用户界面布局请求,创建并实例化第一用户界面模型,并对第一用户界面模型进行布局;第二模块,用于对第一用户界面模型添加第一组件,得到第二用户界面模型;第三模块,用于以第二用户界面模型进行界面布局,得到用户界面布局结果。
示例性地,在装置中的第一模块、第二模块及第三模块的协同下,实施例装置可以实现前述的任意一种基于java的用户界面布局方法,即根据用户界面布局请求,创建并实例化第一用户界面模型,并对第一用户界面模型进行布局;对第一用户界面模型添加第一组件,得到第二用户界面模型;以第二用户界面模型进行界面布局,得到用户界面布局结果。本发明的有益效果为:在GUI布局中更加简便地创造窗体,而且组件与布局分离的写法可以使代码更加直观,后期更便于维护;对于动态布局也有更高的实用性,可以通过循环等逻辑实现可变的GUI窗体;支持无限嵌套,能实现极高复杂度的窗体设计,同时代码也能保持很好的可读性;降低了维护成本,也提高了工作效率。
本发明实施例还提供了一种电子设备,该电子设备包括处理器以及存储器;
存储器存储有程序;
处理器执行程序以执行前述的基于java的用户界面布局方法;该电子设备具有搭载并运行本发明实施例提供的界面切换的软件系统的功能,例如,个人计算机(PersonalComputer,PC)、手机、智能手机、个人数字助手(Personal Digital Assistant,PDA)、可穿戴设备、掌上电脑PPC(Pocket PC)、平板电脑等。
本发明实施例还提供了一种计算机可读存储介质,所述存储介质存储有程序,所述程序被处理器执行实现如前面所述的基于java的用户界面布局方法。
在一些可选择的实施例中,在方框图中提到的功能/操作可以不按照操作示图提到的顺序发生。例如,取决于所涉及的功能/操作,连续示出的两个方框实际上可以被大体上同时地执行或所述方框有时能以相反顺序被执行。此外,在本发明的流程图中所呈现和描述的实施例以示例的方式被提供,目的在于提供对技术更全面的理解。所公开的方法不限于本文所呈现的操作和逻辑流程。可选择的实施例是可预期的,其中各种操作的顺序被改变以及其中被描述为较大操作的一部分的子操作被独立地执行。
本发明实施例还公开了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器可以从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行前述的基于java的用户界面布局方法。
此外,虽然在功能性模块的背景下描述了本发明,但应当理解的是,除非另有相反说明,所述的功能和/或特征中的一个或多个可以被集成在单个物理装置和/或软件模块中,或者一个或多个功能和/或特征可以在单独的物理装置或软件模块中被实现。还可以理解的是,有关每个模块的实际实现的详细讨论对于理解本发明是不必要的。更确切地说,考虑到在本文中公开的装置中各种功能模块的属性、功能和内部关系的情况下,在工程师的常规技术内将会了解该模块的实际实现。因此,本领域技术人员运用普通技术就能够在无需过度试验的情况下实现在权利要求书中所阐明的本发明。还可以理解的是,所公开的特定概念仅仅是说明性的,并不意在限制本发明的范围,本发明的范围由所附权利要求书及其等同方案的全部范围来决定。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。
计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。
以上是对本发明的较佳实施进行了具体说明,但本发明并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。
- 一种用户信息共享方法、装置、电子设备及存储介质
- 一种用户留存分析方法、装置、电子设备及存储介质
- 活跃用户数量确定方法及装置、存储介质和电子设备
- 群智感知用户的选择方法、装置、电子设备及存储介质
- 用户信用评估方法及装置、电子设备、存储介质
- 基于Java语言的动态扩展方法、装置、电子设备及存储介质
- 基于用户画像的推荐方法、装置、电子设备及存储介质