• 【Java Swing】Swing 界面风格开发


    JAVA的界面编程,有SWT,Swing组件都可以支持界面开发。

    此处使用JAVA原生的Swing组件开发,介绍如何定制系统主题。

    界面外观的管理是由UIManager类来管理的。不同的系统上安装的外观不一样 ,默认的是java的跨平台外观。

    1、获取系统所有默认外观

    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    public class MyWindow1  extends  JFrame {    
    public  static void main(String []agrs)
    {
      UIManager.LookAndFeelInfo  []info = UIManager.getInstalledLookAndFeels() ;  
      for(UIManager.LookAndFeelInfo tem:info)
      {
          System.out.println(tem.getClassName());
      }
    }
    }

     在本机windows执行结果如下:

    javax.swing.plaf.metal.MetalLookAndFeel                   
    批注: UIManager.getCrossPaltformLookAndFeelClassName()执行结果,直接获取跨平台外观,返回的是外观类名字 
    javax.swing.plaf.nimbus.NimbusLookAndFeel
    com.sun.java.swing.plaf.motif.MotifLookAndFeel
    com.sun.java.swing.plaf.windows.WindowsLookAndFeel        
    批注: UIManager.getSystemLookAndFeelClassName()执行结果,获得系统的外观类名字
    com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel

    2、设置系统风格方法

    UIManager.setLookAndFeel(new MetalLookAndFeel());
    try {
          UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        } catch (Exception e) {
          System.out.println("Substance Raven Graphite failed to initialize");
        }

    3、使用开源的 look$feel

    常见有:Seaglass、Substance ,可以从网上下载对应的JAR包。
    Substance 的使用样例
     
     try {
            UIManager.setLookAndFeel(new SubstanceLookAndFeel());
            UIManager.put("swing.boldMetal", false);
            if (System.getProperty("substancelaf.useDecorations") == null) 
         {
            // 使得标题栏和对话框跟随外观变化  JFrame.setDefaultLookAndFeelDecorated(
    true); JDialog.setDefaultLookAndFeelDecorated(true); } System.setProperty("sun.awt.noerasebackground", "true"); //设置当前的主题风格,同样还可以设置当前的按钮形状,水印风格等等 SubstanceLookAndFeel.setCurrentTheme(new SubstanceLightAquaTheme()); } catch (Exception e) { System.err.println("Oops! Something went wrong!"); }

    4、添加水印背景

    JFrame.setDefaultLookAndFeelDecorated(true);
    JDialog.setDefaultLookAndFeelDecorated(true);
    try {
                SubstanceImageWatermark watermark = new  SubstanceImageWatermark(LoginFrame.class.getResourceAsStream("/001.jpg"));
                watermark.setKind(ImageWatermarkKind.SCREEN_CENTER_SCALE);
                SubstanceSkin skin = new OfficeBlue2007Skin().withWatermark(watermark);   //初始化有水印的皮肤
    
                UIManager.setLookAndFeel(new SubstanceOfficeBlue2007LookAndFeel());
                SubstanceLookAndFeel.setSkin(skin);  //设置皮肤
               
            } catch (UnsupportedLookAndFeelException ex) {
                Logger.getLogger(LoginFrame.class.getName()).log(Level.SEVERE, null, ex);
            }
    代码中 SubstanceLookAndFeel.setSkin(skin)必须要在 UIManager.setLookAndFeel(new SubstanceOfficeBlue2007LookAndFeel()); 这句的下面。
    否则你看不到水印的效果

    其中:SubstanceOfficeBlue2007LookAndFeel来自于开源的substance.jar 

  • 相关阅读:
    C#缓存初步学习
    C#性能优化杂七杂八的总结
    C#常用的加密算法:MD5、Base64、SHA1、SHA256、HmacSHA256、DES、AES、RSA
    C# RAS生成.NET公钥与私钥以及.NET公钥与私钥转Java公钥私钥类
    SqlSever查询某个表或某个库的列名称、说明、备注、注释,类型等
    常用Git命令清单
    .NET Core 3.0X及以上版本的EFCore连接MySql 8.022
    ASP.NET Core 3.X后出现 [The JSON value could not be converted to System.Nullable] 错误
    从遥感影像到土地利用转移矩阵
    利用Jenkins+SVN+Windows服务对NetCore项目实行持续集成、自动化部署CI/CD
  • 原文地址:https://www.cnblogs.com/clarino/p/5296971.html
Copyright © 2020-2023  润新知