java中的Synth外观

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

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值