2013-01-19 36 views
2

从事Web设计和Android工作后,我终于开始了桌面软件的开发工作,直到开始使用UI Design for Desktop时,我的开发周期出现了重大延迟。迄今的经验是一种痛苦。我决定使用Java编写程序,因为那样我就可以使用跨平台的API来进行套接字和无线接口(我的程序严重依赖并且成功运行)。桌面用户界面设计工具,最好是Java或Java包装

的Web和Android UI设计:

HTML/CSS/JavaScript的; XML/Android API - >提供高度的灵活性,定制化,快速的UI开发周期。

Java桌面UI设计

AWT/Swing的/ Swing的FX - >

  1. 几乎没有自定义的可能性,从问题herehere看到。如果可以定制,则实施它会大大增加开发时间,如here。它也增加了代码复杂性,在大多数情况下,解决方案是本地的,不适用于跨平台的(至少Linux,Windows,Mac)。原生的,默认的外观实际上并非大多数UI设计师所需要的。

  2. 拖放选项很好,可以缩短开发时间。 Window Builder。但是添加ImageView之类的选项缺失。而且,如果需要在第2点中提到的定制,则自动生成的代码必须进行大量修改,完全否定使用Drag-n-Drop。

任何人都可以建议我一个很好的或近于良好的UI工具,或者说UI引擎(如果存在的话),它具有以下特点:

1. Quick development time. Drag-n-drop, HTML/CSS/XML like methods to design. 

    2. Everything is cross-platform, including customization solutions. 

    3. High degree of customization. Developer designs what looks good to him/her, 
     without increasing time-to-develop much. 

    4. Also cross-language. That is, has wrappers for all major programming languages, 
     like C++,Java,Python etc. 

最好的办法或工具,在我看来:

  1. Qt Framework。非常适合用户界面,但如果Java和其他语言的包装器 真的很好。它不会缩短开发时间,并且会要求手动编码,但可以使界面看起来非常好,并且可以使用

  2. WxPython。另一个好工具,如果它有其他 语言的包装器,将会很酷。

  3. 一些工具,可以让设计桌面用户界面与HTML/CSS/XML类似的语法和易于使用。的UI工具

  4. 不停的思考,无论是

    一个。只需停止抱怨并使用默认设置和现有工具以及本机 外观。

    b。手工编码一切,并为每个平台单独定制。

    c。在Java和程序UI中采用一个图形画布,就像在游戏中编写场景 一样。

请提出建议,如果您认为不然,或者如果有更好,更容易的选项可用。

谢谢。

+2

'Qt Framework。非常适合用户界面,但它真的很好,如果它有Java和其他语言的包装。“嗯,这个怎么样:http://qt-jambi.org/ –

+0

@Amit Tomar:非常棒的链接,谢谢! –

回答

6

“几乎没有自定义的可能性”在我看来,短视的,你可以看看here的信息,外观和感觉,而如果你喜欢冒险,你可以创建自己的。许多人在定制Swing时遇到的问题更多的是由于缺乏对API的灵活性的理解,事实上,我发现Swing是最灵活和可定制的工具包之一 - 恕我直言。

你也可以看看here关于如何使自己的组件

什么,你必须知道的是,当你到“快速工具”开始减少的灵活性和定制灵活性,因为这些工具开始靠拢锁定你。

我没有WindowBuilder的经验,但是NetBeans表单设计器允许你包含项目类路径中的任何组件,包括你构建或下载的任何组件。

我同意在Swing中常常会遇到的批评之一是需要多长时间才能启动并运行。这归结于为灵活性和可定制性设计的API。最终开发人员需要围绕API构建最适合其需求的库。

大多数人会告诉你,避免屏幕制造商赞成手动编码。就我个人而言,我喜欢屏幕建设者,但我坚持认为我的初级开发人员能够很好地理解布局经理的工作方式,并构建复合布局等设计技术。

我认为很多人都有的问题是忘记构建应用程序。虽然我喜欢一个很好看的应用程序,但我仍然更喜欢一个实际上完成它设计的任务,并且做得很好,看起来很漂亮。

恕我直言

+0

+1。 – trashgod

+0

@MadProgrammer,感谢您的输入。我同意功能比look更重要。我在完成并验证软件的核心功能后开始了UI设计。谈到小型软件时,很难相信UI设计实际上需要更多时间,而不是开发功能。我已经检查了LNF,使用Swing进行定制尽管可能会增加开发时间,解决方案并不总是跨平台的。 –

+0

如果您了解如何制作圆角的JFrame(提供的链接),您会意识到,Java 6提供的解决方案不够优雅,实际上是使用半透明提供的解决方法,这极大地增加了代码,并不保证一直工作。 –

2

我将在Qt的方面讲

1. Quick development time. Drag-n-drop, HTML/CSS/XML like methods to design.

Qt提供了良好的发展环境:

  1. Qt Creator的跨平台IDE
  2. Qt Quick的设计师
  3. Qt Designer
  4. 国际工具
  5. HTML帮助系统
  6. 的Visual Studio插件和Eclipse的集成
  7. 跨平台编译工具

你可以在给定的链接阅读有关QtDesigner。它为你提供了一个简单的你所看到的是所见即所得(WYSIWYG)类型的接口和生成的自动代码。其他模块如国际化也可以很好地使用,如果你想让你的用户界面成为多语言的话。

2. Everything is cross-platform, including customization solutions.

的Qt适用于以下平台:

  1. 的Windows - Qt的微软Windows XP,Vista中,7
  2. 的Windows CE,移动 - 的Qt适用于Windows CE和Windows Mobile。
  3. Symbian - Qt为Symbian平台。
  4. OS X - 用于Apple OS X的Qt;支持可可的应用程序。
  5. X11 - 用于X Window系统(GNU/Linux,FreeBSD,HP-UX,Solaris,AIX等)的Qt。
  6. 嵌入式Linux - 用于嵌入式平台的Qt:个人数字助理,智能手机。 Maemo,MeeGo - Qt for Maemo,与Moblin合并为MeeGo
  7. Wayland - Qt for Wayland显示服务器。 Qt应用程序可以图形后端像X和韦兰之间在加载时与-platform命令行选项

外部端口

由于诺基亚打开Qt的源代码在Gitorious各种端口社区已出现切换。下面是其中一些:

  1. Qt的OpenSolaris的 - Qt的OpenSolaris的
  2. 的Qt的俳句 - 对Qt的俳句
  3. 的Qt为OS/2 - Qt的OS/2的ECS平台
  4. QT间iPhone - Qt的实验开发iPhone
  5. 的Qt为webOS的 - 对Palm Pre的
  6. 的Qt为亚马逊Kindle DX的webOS的Qt的实验开发 - 对亚马逊Kindle DX
  7. 的Qt的实验开发210个
  8. Necessitas - Qt的Android的
  9. Qt的黑莓 - Qt的黑莓

3. High degree of customization. Developer designs what looks good to him/her, without increasing time-to-develop much.

如上所述。

4. Also cross-language. That is, has wrappers for all major programming languages, like C++,Java,Python etc.

你不会相信的列表here。它们涵盖了几乎所有的东西,包括Ada,Pascal,Perl,PHP,Ruby,Python和Java。


我已经给出了上述信息假设您正在计划使桌面应用程序的“天然”窗口小部件的外观和feel.And我想补充一点,以上。

  1. 万一你有足够的灵活性,使用户界面并不真正具备“按钮”等,并更像是“智能手机的用户界面”,不用去别的地方比使用Qt的快速。

  2. 快速,简单,功能强大,灵活。事实上,他们已经开始为qml中的直接桌面小部件提供一些支持。见here

  3. 随着现代台式电脑的外观和感觉的快速变化,趋势似乎将在电话和桌面用户界面合并的未来发展。

随着桌面方面几乎没有任何创新,他们似乎正在朝着电话世界里的新事物发展。 那么,看看在Windows Metro种类的UI中发生了什么?

为了以防万一,您可以阅读here如何让地铁像UI是qml !.

随着Qt5进来,事情变得更好!阅读this,了解它如何弥合台式机和手机用户界面之间的差距。

P.S.观点可能有点偏见,Qt粉丝和Java讨厌太多了。 : - )