关于在java中构建gui和小部件

时间:2013-08-18 02:34:20

标签: java user-interface jgoodies

我是java的初学者。虽然我已经研究了很多关于语言的文献(很好),但这是我的第一个真正的项目。

我基本上打算制作一个简单的时钟小部件,然后计划构建Gui。到现在为止,我已经学会了。但后来我在这个网站上发现Swing有点过时了 (参考:Java GUI frameworks. What to choose? Swing, SWT, AWT, SwingX, JGoodies, JavaFX, Apache Pivot?)。

我需要的是java中的一些优秀的库来帮助我完成这个过程(时钟小部件和随后更复杂的gui)。所以我想从jgoodies中获取免费的库。

现在我完全感到困惑,搞砸了做什么,什么都不懂。当然,我不需要设计模式等等的书籍。只是java引用和gui使用java和jgoodies的一些教程让我开始。我无法在任何地方找到它们。 所以请指出我正确的方向。

阅读背景(Head First java,java完整参考和数据结构和算法)

(建议其他人,如果还不够)

2 个答案:

答案 0 :(得分:1)

AWT已被Swing取代。

SWT是一个不同的框架,它提供了与操作系统更强的本机交互

JavaFX是该块的新玩家,而有些人认为它是Swing的替代品,它的主要目的是显示Flash或作为它的替代品。

SwingX和JGoodies是基于Swing的库。

Swing和SWT已经开始了很长一段时间,有些人可能会认为它们是“旧的”,但它的意思是围绕框架有一些知识,以及一些旨在支持和延伸他们

JavaFX是市场上的新玩家,尚未建立相同的知识和支持基础。

如果我是你。我会关注Swing(个人),因为它将为您提供经验丰富的开发人员和支持的最佳基础,以帮助您。

一旦你变得更加舒服,你可以探索SWT,JavaFX和其他工具包和框架。

我会从Creating a GUI with SwingPerforming Custom Painting2D Graphics开始。

我(个人)的感觉是建立对基础库的理解,尝试并学习它的优点和缺点。这将帮助您了解何时使用SwingX和JGoodies这样的库 - 恕我直言

答案 1 :(得分:0)

  

我需要的是java中的一些优秀的库来帮助我完成这个过程(时钟小部件和随后更复杂的gui)。所以我想从jgoodies中获取免费的库。

可能你不像你想象的那样需要图书馆。从第一原理学习东西,你会更好地学习它。

所有主要的Java GUI框架都具有相当高的级别和功能。当你刚开始时,我认为你应该跳过第三方库,看看你在基础JRE和你选择的框架中提供的内容有多远。只需要基本框架,java语言和JRE,就可以学到很多东西。如果您过早地尝试添加其他框架,最终会导致过载,混乱和效率降低。此外,增加的库抽象可能会阻止您充分了解一些重要的基本原则。

一旦您在构建内容方面获得了更多经验,那么您将更好地了解框架中的差距适用于您的应用程序,并且您可以在此时添加第三方库。

  

计划制作一个简单的时钟小部件

如果您遇到问题,请参阅JavaFX时钟的代码:How to draw a clock with JavaFX 2?Swing中的类似实现。

请注意,创建时钟与创建使用预定义控件库的传统基于表单的GUI有很大不同 - 但任何主要的Java GUI框架都可以处理这两个任务。

不要让时钟成为您的第一个GUI编程任务,做一些更容易的事情。然后尝试创建一个时钟。

  

使用摆动进行精确布局确实是一项艰巨的工作

Swing和其他框架有交互式图形布局管理器(例如JavaFX的优秀SceneBuilder),这使得这更容易。

但是,首次启动时,可能值得手工编写代码,而不是让工具为您管理布局(例如,在学习JavaFX时,只使用Java API并且在您完全熟悉之前不要使用FXML) Java API)。您将以这种方式更好地了解布局管理和其他内容的细节。当然,你会犯一些错误,会有一些挫败感,但事情会随着时间的推移而变得清晰。而且你最终可能最终决定你更喜欢手工编码而不是使用图形工具。

棘手的部分通常是创建高质量,可动态调整大小的GUI,这些GUI在不同的分辨率和窗口大小下都很好 - 无论使用什么GUI工具包,这对于初学者来说通常都很棘手。

JavaFX中的布局管理器与Swing中的基本布局管理器非常相似 - 因此布局方面两个框架之间几乎没有区别。

JavaFX中的保留模式Scene Graph可能比Swing的直接模式绘制更容易使用,但我猜这与布局无关。

内省工具,例如JavaFX的ScenicView,可以在运行时简化调试布局。将ScenicView视为与Firebug for HTML类似的东西(例如您的基本布局调试伴侣)。

  

现在我完全糊涂了,搞砸了什么,什么都不懂。

你理解的比你想象的要多,或者你不会知道这个问题。

你应该做什么(IMO)只是选择一个Java GUI框架(任何框架 - 它们都是可通过的),选择一个不错的开始任务(看起来很简单 - 甚至比时钟简单)并开始编码。让一切与任务相关;具有明确目标的非常小的任务。编写相当数量的代码,并始终返回并修改您的代码,并将其输出设置为尽可能最好 - 不要满足于此。

尝试绘制彩虹和幸福的面孔 - 当你编写它并在屏幕上看到它时,你会对自己感觉良好: - )

如果您需要更新Java语言,请关注Oracle Learning the Java Language trail。这条道路是我多年前学习Java的方式。多年来一直保持这种状态,因此它仍然是一个很好的资源,今天很有用。

如果选择Swing,请按照MadProgrammer的起始链接进行操作。

如果您选择JavaFX,请关注JavaFX tutorialsEnsemble sample app,但请注意,某些JavaFX教程针对的是更有经验的程序员。