【问题标题】:Java Look and Feel (L&F) [closed]Java 外观 (L&F) [关闭]
【发布时间】:2011-04-26 15:49:09
【问题描述】:

我正在使用 Java Swing 开发一个桌面应用程序供我个人使用。我的应用程序需要一些漂亮的外观。如何使用 Java 或 3rd 方 API 来实现?

【问题讨论】:

  • LGPL 的外观 Nimrod,作者 Nilo J. González:personales.ya.com/nimrod/faq-en.html。有点问题(无法为 JButton 设置背景颜色 - 使用半透明 BufferedImage 技术通过 paintComponent() 覆盖解决)

标签: java swing look-and-feel


【解决方案1】:

【讨论】:

  • 快速查看应用程序在 Nimbus 下的外观,使用参数 `-Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel` 启动应用程序,例如java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
  • 要在现有应用程序中使用Metal look and feel,请将-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel 参数添加到java 调用中。
  • 哪些在“Retina”显示器上还可以? (不仅在 OS X 上,现在 Win 8 上的笔记本电脑也有高 DPI 屏幕)
【解决方案2】:

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

  • 适用于 Swing 应用程序的跨平台可重新设置样式的 L&F
  • 大量扩展 Swing 组件
  • 各种实用程序和管理器

二进制文件: https://github.com/mgarin/weblaf/releases
来源: https://github.com/mgarin/weblaf
许可证: GPLv3Commercial

几个例子展示了一些 WebLaF 组件的外观:

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

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

【讨论】:

  • 请注意,在不看许可证的情况下进入之前,许可证是 gpl。对于某些人来说,这可能是问题,也可能不是问题。
  • 我认为花几百欧元买一个商业许可证比把钱给你的律师征求意见要好得多,这很可能是“如果你使用产品就买一个商业许可证” .此外,他们的网站说,当您购买商业许可证时,您会获得优先的技术支持。
【解决方案3】:

您也可以使用 JTattoo (http://www.jtattoo.net/),它有几个很酷的主题可供使用。

只需下载 jar 并将其导入您的类路径,或将其添加为 maven 依赖项:

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

以下是他们提供的一些很酷的主题列表:

  • com.jtattoo.plaf.acryl.AcrylLookAndFeel
  • com.jtattoo.plaf.aero.AeroLookAndFeel
  • com.jtattoo.plaf.aluminium.AluminiumLookAndFeel
  • com.jtattoo.plaf.bernstein.BernsteinLookAndFeel
  • com.jtattoo.plaf.fast.FastLookAndFeel
  • com.jtattoo.plaf.graphite.GraphiteLookAndFeel
  • com.jtattoo.plaf.hifi.HiFiLookAndFeel
  • com.jtattoo.plaf.luna.LunaLookAndFeel
  • com.jtattoo.plaf.mcwin.McWinLookAndFeel
  • com.jtattoo.plaf.mint.MintLookAndFeel
  • com.jtattoo.plaf.noire.NoireLookAndFeel
  • com.jtattoo.plaf.smart.SmartLookAndFeel
  • com.jtattoo.plaf.texture.TextureLookAndFeel
  • com.jtattoo.plaf.custom.flx.FLXLookAndFeel

问候

【讨论】:

    【解决方案4】:

    这里的代码创建一个对话框,允许您的应用程序的用户根据用户的系统更改外观。或者,如果您可以将所需的外观存储在您的应用程序中,那么它们可以是“可移植的”,这就是您想要的结果。

       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);
                        }
                    }
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 2014-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多