了解Java GUI开发,管理和设置JComponents

时间:2011-03-22 15:13:24

标签: java user-interface swing jframe jpanel

我想讨论Java GUI,现在,我还在学校,并且我已经开始上课了。(我们简要介绍了它。)

简单而简单,我无法做任何我想做的事情,我想建立一个漂亮干净的布局,但是当你最大化它时,一切都会变得更糟。放入GridLayout时,JButton是巨大的,或者当我清楚地指定按钮的大小等等时,它们跨越了整行。这是Java gui开发的一个又一个令人头痛的问题。

使用Microsoft WPF / XAML UI开发更简单,感觉就像HTML / CSS。设置宽度,高度,边距和填充是很好的,知道我的组件将在哪里放心。你甚至可以设计一个自定义的外观。

我想知道你们是否对开始Java GUI开发的人有任何提示和资源。我不能得到的一件事就是用JFrame启动新项目,即游戏。

在启动时,您将被定向到一个带有4个按钮的面板。

玩游戏 - 带您进入一个新面板来玩游戏。 大堂 - 带你去聊天界面 等等

这些应该是面板吗?或者更多JFrame,例如当用户点击按钮时我启动Play Game JFrame然后关闭菜单JFrame。我真的对Java guis没有任何想法。

4 个答案:

答案 0 :(得分:3)

确保您了解并使用相应的布局管理器。这个Swing教程对于学习每个工作原理非常有用:http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html

还要意识到您可以通过将面板放在另一个面板中来进行图层布局。这有时需要在保持简单的同时达到预期的效果。

对于您的上一个问题,可以将按钮添加到可以在帧之前添加到其他面板的面板。

答案 1 :(得分:2)

首先看看Mig Layout。这是一个真正的全功能布局管理器,目前是最好的。如果由于某种原因您无法使用外部依赖项,那么您将需要查看GridBagLayout。 GridBagLayout足够强大,可以完成您所需的一切,但它不像Mig Layout那样容易使用。

在99%的应用程序中,您将拥有一个JFrame,只需转换JPanel即可显示不同的屏幕。

答案 2 :(得分:2)

首先,构建UI面板时我的一条经验法则是永远不要直接设置任何位置或大小。

然后,第二条规则是永远不要以像素为单位设置任何首选,最小或最大尺寸(因此当您从一台显示器更改为另一台显示器时,会有更高或更低的DPI分辨率)。在我的博客上查看this post,现在还很旧但今天仍然有用。

第三,我尽量避免将面板嵌入面板,因为它会导致元件对齐问题和元件尺寸不一致。

最后,我尝试对我的大多数表单使用DesignGridLayout,如果UI布局太复杂,有时会恢复为GridBagLayout(但复杂的UI布局也可能是UI设计不佳的标志)。 / p>

作为关于如何构建UI应用程序的一般性评论(通常使用任何UI工具包,但特别是使用Swing),存在several recommendations,但是很难找到具体的实现,必须阅读很多关于这些的内容,然后尝试找到最适合你的方式。

答案 3 :(得分:0)

是的,欢迎。与HTML / Javascript / CSS相比,您可以获得与学习时间相当的复杂程度和优雅程度。

(我还没有为你提供所有文件 - 谷歌并开始查找)。

Swing,根据我的经验,我确实觉得我读了1000万份文档,玩了一些演示,每晚花了三四个月2-3个小时,你对api的工作方式有了一些了解,然后不知道为什么有些人不这样做。这很棒。你想要一些工作,然后实现它,并继续f * ck up你的其余gui。

在我看来,Java swing迫切地想要一个开源的JQuery类型插件库,它将动画你的JComponents并以你喜欢的方式呈现它们。它在桌面上是一个明确的二等公民,特别是现在CSS / HTML浏览器渲染的复杂性在过去几年中得到了改善。

灵气的外观和感觉风格肯定是朝着正确的方向发展的。

您也可以转到JavaFx。祝好运。显然它非常好。我还没有时间或耐心。

如果您被允许使用第三方库:尝试使用JAXX作为选项。我们的想法是创建一个css类型的实现,其中样式元素被分成一个可以快速配置和测试的文件。

请阅读此处以获取更好的介绍:today.java.net/pub/a/today/2006/03/30/introducing-jaxx.html

JavaCSS位于JAXX项目中。 JAXX是swing gui界面的xml格式样式实现。您编写了一个xml文档和一个css样式文档,并且能够将GUI的输入和输出绑定到您的java实现引擎。 css样式文档允许快速复杂的gui开发。使用jaxx jar引擎,xml代码将转换为java代码,该代码的运行速度与部署在.java类文件中的代码一样快。

该项目由法国程序员小组继续进行,现在可以在这里找到:http://www.nuiton.org/projects/jaxx/files

该演示至少相当漂亮,大多数事情似乎都有效。

最新版本是JAXX 2.4.2。最新的更新是2011年5月或6月。虽然在法语中,文档仍然可以用英语理解。只需翻译。

jaxx的原始ethan nicholas文件最后更新于17-07-2009

http://sourceforge.net/projects/jaxx/

请注意:www.jaxxframework.org/wiki/Main_Page是一个死链接,该网站已停止使用。而是一个镜子已经制作,可以在以下网站找到:buix.labs.libre-entreprise.org/original-jaxx/www.jaxxframework.org/wiki/Main_Page.html

本文档对于理解jaxx及其使用的含义和目的至关重要。


如果你有耐心,有很多时间,并且有兴趣,也可以看看Chet Haase的时间框架,为组件制作动画,可以创建复杂的效果。它需要学习曲线和时间。

或者付钱让专业的第三方图书馆处理您的gui组件? (嗯,显而易见的答案,没有人花时间和精力去学习创造一个漂亮的gui,只会把它交给那个人)。

所以花三年时间学习,然后向其他人索取moola?

另一个想法 - 我正在探索,但看起来它可能是一个噩梦,尽管每个人都说它很容易,得到一个开源的webbrowser html / csss渲染器嵌入式,并使用CSS设计你的gui / JQuery / HTML。

但看起来你必须首先从源代码编译Web浏览器(mozilla),然后将其包装在另一个程序(例如JRex)中,然后将整个东西放在像Jetty这样的迷你客户端服务器中,你喜欢的前端实现。

只有当浏览器实际上符合CSS2标准和HTML4时才会这样。忘了HTML5。那是为了将来。

好吧,我今天脾气暴躁,但我不认为抱怨是完全没有道理的。