我厌倦了使用JButtons,如何在Java中制作更好的GUI界面?

21

到目前为止,我只使用在学校学到的swing和JComponents构建了“小型”图形应用程序。然而,我再也无法忍受丑陋的JButtons了。我试过尝试使用不同的JButton方法,比如改变颜色、添加图标等等,但我仍然不满意。如何在Java中创建更漂亮的GUI?

我正在寻找不太沉重的替代方案(例如,没有大型框架或过于复杂的库)。


https://dev59.com/MkvSa4cB1Zd3GeqPiO3r#2248437 - Jonas
@Jules Olléon: +1 注意,在某些情况下,我需要一些不存在的组件(比如说,“双/三/四进度条”[在同一个“进度条”中使用不同的颜色]),并且希望在Linux、Windows和OS X上看起来完全相同,所以我费了很大的力气编写了自己的轻量级、基于像素的组件。这与为游戏编写2D GUI(菜单等)并没有太大区别。顺便说一句,所有建议改变默认布局的建议都不太可能在OS X上产生可接受的结果:你要确保只有在不使用OS X时才使用这些L&F ;) - SyntaxT3rr0r
@Jules Olléon:还要注意第二个原因,为什么您可能不想在OS X上使用这些L&F,因为这样做很可能会违反Apple的指南(默认情况下,不需要干扰任何内容,Java JButton 在OS X上确实看起来非常漂亮)。 - SyntaxT3rr0r
10个回答

18

Swing支持更改外观和感觉。

这个教程详细解释了如何实现:

UIManager.setLookAndFeel(lookAndFeelClassName);

另一种方法是使用 L&F 启动您的应用程序:

java -Dswing.defaultlaf=com.sun.java.swing.plaf.windows.WindowsLookAndFeel MyApp

这里有一个包含10个非常漂亮的界面外观和风格的列表。


谢谢,这是一个非常简单的方法来给我的GUI带来新鲜感! - Jules Olléon

5

你至少尝试过nimbus外观吗?它比其他外观好一点。

UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");

唯一的缺点是需要至少Java6更新10。


5

我正在使用SWT。它是一个非常好用的Java GUI框架,Eclipse就是基于它构建的。你也可以使用这个Eclipse插件Instantiations来创建你的表单。


SWT在不同的操作系统上表现略有不同。在Mac OS X上,一些用于导航列表的键盘快捷键似乎无法使用;而在Linux上,我遇到了一些与(C)库依赖项相关的问题。它比Swing更依赖于操作系统,因此使用它的应用程序需要进行更多的测试。 - extraneon
这个答案针对这个问题的主要反对意见是它涉及到更改工具包,这对于提问者来说太过繁琐。否则是一个好主意。 - Donal Fellows
1
你说得对,这确实是它存在的主要问题,就是它依赖于操作系统(OS dependent)。但是,如果你正在寻找一个外观精美且非常快速的Java GUI,我会选择SWT。最好的大学通过推广SWT来启动GUI教育。 - Roman

4
try
{
     UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch(Exception e)
{}

2

我们的项目经理也不喜欢JButtons,因此我们使用JIDE OSS按钮(以及许多其他JIDE组件)代替。 SwingX也提供了一种选择 - JXButton。在我看来,这是两个最有价值的外部Swing库。


1
你可能想尝试JavaFX。虽然它有一些问题,但我发现如果你想在你的Java应用程序上放置一个不错(比Swing更漂亮)的界面,这是相当容易做到的。此外,它与Java的集成也很好。你可以在JavaFX中实现Java接口,反之亦然。

您的链接已经失效,出现了软性404重定向到Java主页。 - Ferrybig

1

这篇文章展示了如何扩展JButton并覆盖绘制组件的方法。


1

0

如果你对图形设计有一定了解,你可能想考虑使用Synth来创建自己的设计,它是标准JRE的一部分。如果你不想自己创建,可以在谷歌上搜索免费的现有主题。

除了Synth之外,还有Synthetica(个人非商业使用免费)或Substance("BSD许可证"下的"免费")等替代方案。


-2

如果Java有一个类似于Interface Builder的工具(Xcode附带的GUI开发工具),那将是非常好的事情 - 这是我见过的最好的UI构建器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接