我想讨论Java GUI,现在,我还在学校,并且我已经开始上课了。(我们简要介绍了它。)
简单而简单,我无法做任何我想做的事情,我想建立一个漂亮干净的布局,但是当你最大化它时,一切都会变得更糟。放入GridLayout时,JButton是巨大的,或者当我清楚地指定按钮的大小等等时,它们跨越了整行。这是Java gui开发的一个又一个令人头痛的问题。
使用Microsoft WPF / XAML UI开发更简单,感觉就像HTML / CSS。设置宽度,高度,边距和填充是很好的,知道我的组件将在哪里放心。你甚至可以设计一个自定义的外观。
我想知道你们是否对开始Java GUI开发的人有任何提示和资源。我不能得到的一件事就是用JFrame启动新项目,即游戏。
在启动时,您将被定向到一个带有4个按钮的面板。
玩游戏 - 带您进入一个新面板来玩游戏。 大堂 - 带你去聊天界面 等等
这些应该是面板吗?或者更多JFrame,例如当用户点击按钮时我启动Play Game JFrame然后关闭菜单JFrame。我真的对Java guis没有任何想法。
答案 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。那是为了将来。
好吧,我今天脾气暴躁,但我不认为抱怨是完全没有道理的。