Java外观(L&F)


163

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


1
由Nilo J.González制作的LGPL外观Nimrod:personales.ya.com/nimrod/faq-en.html。有点问题(无法为JButton设置背景色-使用半透明的BufferedImage技术用paintComponent()覆盖解决了)
ecle 2012年

Answers:


199

LaF有很多可能性:


资源:

相关话题 :


2
快速的方法来看看如何雨云在你的应用程序的外观,`-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel`例如使用参数启动应用程序 java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar

3
使用金属外观在现有应用程序中-Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel向Java调用添加参数。
maciej

在“ Retina”显示器上,哪一个可以?(不仅在OS X上,现在在Win 8上也有具有高DPI屏幕的笔记本电脑)
显示名称

61

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

  • 适用于Swing应用程序的跨平台可重塑L&F
  • 大套扩展的Swing组件
  • 各种公用事业和经理

二进制文件: https : //github.com/mgarin/weblaf/releases
来源: https : //github.com/mgarin/weblaf
许可: GPLv3商业版

一些示例显示一些WebLaF组件的外观: WebLaF的一些组件

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

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


请注意,在不查看许可证的情况下跳入许可证即为gpl。对于某些人来说这可能是问题,也可能不是问题。
Tinus Tate

我认为,花几百欧元购买商业许可证要比将钱交给律师的建议要好得多,这很可能是“如果使用该产品,则要购买商业许可证”。此外,他们的网站说您购买商业许可证时会获得优先的技术支持。
杰夫·霍尔特

4

您也可以使用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

问候


1

这是创建对话框的代码,该对话框使您的应用程序用户可以基于用户的系统更改外观。另外,如果您可以在应用程序上存储所需的外观,则它们可以是“便携式的”,这是所需的结果。

   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);
                    }
                }
            }
        }
    }
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.