Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 271|回复: 0

[Swing学习]java中的Synth外观

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-31 23:55:35 | 显示全部楼层 |阅读模式
    java中的Synth外观
        Synth,它是一个完整的外观,而不是一个主题,它针对的并不是程序员,而是界面设计人员,让他们不必掌握Java 知识便能够进行相应界面的选择定制。采用了Synth 后,我们不能从现有外观或主题派生子类、修改字体或颜色,而是通过转载不同的XML 文件以达到对相应界面的控制。其实现步骤包括将程序外观设置成Synth 模式以及编辑相对应的XML 文件。
        设置Synth外观模式,可以使用以下代码:

      

      
       SynthLookAndFeel synth = new SynthLookAndFeel();

        Class aClass = SynthTest.class;

        InputStream is = aClass.getResourceAsStream("file1.xml");

        synth.load(is, aClass);

        UIManager.setLookAndFeel(synth);

          对于XML 中的大多数事情来说,文件的内容由文档类型定义(DTD)描述。只要在XML文件中描述组件,然后把文件传给SynthLookAndFeel 实例的load() 方法,应用程序的外观就会有所不同。以下是XML 控制程序外观的代码:
      
      
       
       
       

       
      
      
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <synth>
      <style id="button">
        <font name="Dotum" size="24" style="BOLD"/>
        <state value="MOUSE_OVER">
           <font name="System" size="48" style="ITALIC"/>
        </state>
      </style>
      <bind style="button" type="region" key="Button"/>
    </synth>

    以下附上Synth 的演示代码SynthTest.java,与其相对应的XML 文件可选用上面的示例代码,将其更名为synth.xml 即可:

    import java.io.InputStream;
    import java.text.ParseException;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.UIManager;
    import javax.swing.plaf.synth.SynthLookAndFeel;
    public class SynthTest{
        private static void createGUI(){
          SynthLookAndFeel synth = new SynthLookAndFeel();
          try {
             Class classA = SynthTest.class;
             InputStream in = classA.getResourceAsStream("synth.xml");
             if (in == null) {
               System.err.println("Unable to find theme configuration");
               System.exit(-1);
             }
         synth.load(in, classA);
         } catch (ParseException e) {
             System.err.println("Unable to load theme configuration");
             System.exit(-2);
         }

         try {
              UIManager.setLookAndFeel(synth);
         } catch (javax.swing.UnsupportedLookAndFeelException e) {
              System.err.println("Unable to change look and feel");
              System.exit(-3);
         }

        JFrame frame = new JFrame("Test Synth");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JButton button = new JButton("Hello Synth");
        frame.add(button);
        frame.setSize(400, 200);
        frame.setVisible(true);

       }

       public static void main(String[] args){
          javax.swing.SwingUtilities.invokeLater(new Runnable(){
            public void run() {
            createGUI();
           }
          });
      }

    }
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-2-25 19:23 , Processed in 0.358469 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表