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

}  

你可能感兴趣的:(java,xml,String,文档,button,encoding)