【问题标题】:Regarding bulding gui and widgets in java [closed]关于在java中构建gui和小部件[关闭]
【发布时间】:2013-08-18 13:03:44
【问题描述】:

我是一个完整的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完整的ref和数据结构和算法)

(如果不充分,建议其他)

【问题讨论】:

  • java.sun.com 和在那里找到的参考资料是 Java 语言基础的最佳来源。 Oracle 现在拥有 Java,所以那里可能也有很好的资源。

标签: java user-interface jgoodies


【解决方案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 等库 - 恕我直言

【讨论】:

  • 好的..但随着时间的推移,我不断被告知使用挥杆进行精确布局确实是一项艰巨的工作,甚至有人说初学者无法处理。是这样吗?
  • 恕我直言,精度布局被高估了。除了创建它的方式之外,没有任何使用精确布局的 GUI 框架可以在任何其他计算机上运行。现代计算机有大量可能的字体、屏幕分辨率、方向和 DPI(例如),试图为所有这些组合编写精确的布局将是一辈子的工作。 Swing 的布局管理器提供了一个高度灵活的 API 框架,它不仅可以跨运行相同操作系统的计算机解决这些问题,还可以解决不同操作系统的问题。看HTML,它不使用精确布局,例如
  • 使用 Microsoft 的 Foundation Framework、VB6、Delphi 和 Swing 进行编码后,我可以告诉你,我更喜欢 Swing 的布局管理器 API,而不是我见过的任何其他解决方案,而且我实际上见过布局管理器也为所有其他语言编写的;)
【解决方案2】:

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

您可能并不像您认为的那样需要库。从第一原理中学习东西,你会学得更好。

所有主要的 Java GUI 框架都已经相当高级且功能强大。当您第一次开始时,我认为您应该跳过第 3 方库,看看您在基本 JRE 和您选择的框架中提供的内容能走多远。仅使用基本框架、Java 语言和 JRE 就已经足够学习了。如果你过早地尝试添加其他框架,你最终会超载、困惑和效率低下。此外,库的抽象程度增加可能会妨碍您充分了解一些重要的基本原理。

一旦您在构建事物方面获得了更多经验,您就会更好地了解框架中的差距在哪里适合您的应用程序,届时您可以添加 3rd 方库。

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

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

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

不要把时钟作为你的第一个 GUI 编程任务,做一些更简单的事情。然后尝试稍后创建时钟。

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

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

但是,在第一次开始时,可​​能值得手动编写代码而不是让工具为您管理布局(例如,在学习 JavaFX 时,只使用 Java API,并且在您完全熟悉之前不要使用 FXML Java API)。通过这种方式,您将更好地了解布局管理和其他内容的来龙去脉。当然你会犯一些错误并且会有一些挫败感,但只要坚持不懈,事情就会变得清晰。而且您最终可能会决定更喜欢手动编码而不是使用图形工具。

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

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

JavaFX 中的保留模式场景图可能比 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 教程面向更有经验的程序员。

【讨论】:

  • 我实际上是从 swt..but 开始的。我想我应该坚持几天摇摆。然后可能是 swt 或 java fx 或任何其他,虽然乍一看我发现 swt 更容易。
猜你喜欢
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 2010-10-02
  • 1970-01-01
相关资源
最近更新 更多