如何设计 Java 桌面应用的外观与风格

我正在用 JavaSwing 开发一个个人用的桌面应用程序。我的应用程序需要一些漂亮的外观和感觉。我如何使用 Java 或第三方 API 来做到这一点?

142437 次浏览

你可以试试我正在开发的 L & F-WebLaF 网站: http://weblookandfeeling. com
它结合了成功 UI 开发所需的三个部分:

  • 用于 Swing 应用程序的跨平台可重新设计的 L & F
  • 大型扩展 Swing 组件集
  • 各种公用事业和管理人员

二进制文件: < a href = “ https://github.com/mgarin/weblaf/release”rel = “ norefrer”> https://github.com/mgarin/weblaf/releases
资料来源: 《 https://github.com/mgarin/weblaf 》
许可证: GPLv3和 ref = “ http://weblookandfeel. com/alee-software-License-agreement/”rel = “ noReferrer”> Commercial

一些示例展示了一些 WebLaF 组件的外观: Some of WebLaF components

我开始使用一个全新的 L & F 的主要原因是大多数现有的 L & F 缺乏灵活性——在大多数情况下你不能重新设计它们(在最好的情况下你只能改变一些颜色和打开/关闭一些 UI 元素)和/或只有不方便的方法来做到这一点。当涉及到自定义/第三方组件样式时,情况就更糟糕了——它们看起来与某些特定 L & F 风格的其他组件不相似,甚至完全不同——这使您的应用程序看起来不专业,令人不快。

我的目标是提供一个完全可定制的 L & F,其中包含一系列广为人知的、有用的组件(例如: 日期选择器、树表、可停靠和文档窗格等等) ,以及其他有用的管理器和实用程序,这将减少快速将 WebLaF 集成到应用程序中所需的代码量,并有助于使用 Swing 创建出色的 UI。

你也可以使用 JTattoo (http://www.jtattoo.net/) ,它有一些很酷的主题可以使用。

只需下载 jar 并将其导入到类路径中,或者将其作为 maven 依赖项添加:

<dependency>
<groupId>com.jtattoo</groupId>
<artifactId>JTattoo</artifactId>
<version>1.6.11</version>
</dependency>

下面是他们提供的一些很酷的主题:

  • Com.jattoo.plaf.acyl.AcrylLookAndfeel
  • Com.jtattoo.plaf.aero
  • 铝,铝的外观和感觉
  • Com.jattoo.plaf.Bernstein
  • Com.jattoo.plaf.fast. FastLookAndfeel
  • 石墨石墨外观和感觉
  • Com.jattoo.plaf.hifi.HiFiLookAndfeel
  • Com.jtto.plaf.luna LunaLookAndfeel
  • Com.jattoo.plaf.mcwin.McWinLookAndfeel
  • Com.jattoo.plaf.minLookAndfeel
  • Com.jattoo.plaf.noire NoireLookAndfeel
  • Com.jattoo.plaf.smart. SmartLookAndfeel
  • 纹理
  • Com.jattoo.plaf.custom.flx.FLXLookAndfeel

问候

下面是创建对话框的代码,该对话框允许应用程序的用户基于 使用者的系统更改外观和感觉。或者,如果您可以在应用程序中存储所需的 Look And Feel,那么它们可以是“可移植的”,这就是所期望的结果。

   public void changeLookAndFeel() {


List<String> lookAndFeelsDisplay = new ArrayList<>();
List<String> lookAndFeelsRealNames = new ArrayList<>();


for (LookAndFeelInfo each : UIManager.getInstalledLookAndFeels()) {
lookAndFeelsDisplay.add(each.getName());
lookAndFeelsRealNames.add(each.getClassName());
}


String changeLook = (String) JOptionPane.showInputDialog(this, "Choose Look and Feel Here:", "Select Look and Feel", JOptionPane.QUESTION_MESSAGE, null, lookAndFeelsDisplay.toArray(), null);


if (changeLook != null) {
for (int i = 0; i < lookAndFeelsDisplay.size(); i++) {
if (changeLook.equals(lookAndFeelsDisplay.get(i))) {
try {
UIManager.setLookAndFeel(lookAndFeelsRealNames.get(i));
break;
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
err.println(ex);
ex.printStackTrace(System.err);
}
}
}
}
}