站内搜索: 请输入搜索关键词

当前页面: 开发资料首页Java 专题Hello,Synth!

Hello,Synth!

摘要: Hello,Synth!

</td> </tr> <tr> <td height="35" valign="top" class="ArticleTeitle"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td height="43" align="center" valign="top"> </td> </tr> <tr> <td height="20">


SYNTH Synth是J2SE5.0里新引入的Swing组件。 Synth是用户自定义的界面工具(一般被称作skinnable)。用户定义的skin(你叫它皮肤也好)是由一个xml文件控制。这样我们就不必再依靠UIManager去编写属性表来控制界面外观。我们只需要到下面的xml文件中调整部件定义就可以了,基本上省去了代码编写的工作。
下面是一个简单的例子, --来自sun java技术论坛

 import java.awt.BorderLayout;

   import java.awt.EventQueue;

   import java.io.InputStream;

   import java.text.ParseException;

   import javax.swing.JButton;

   import javax.swing.JLabel;

   import javax.swing.JFrame;

   import static javax.swing.JFrame.*;

   import javax.swing.UIManager;

   import javax.swing.plaf.synth.SynthLookAndFeel;

   public class HelloSynth {

     public static void main(String args[]) {

       Runnable runner = new Runnable() {

         public void run() {

           SynthLookAndFeel synth = new SynthLookAndFeel();

           try {

             Class aClass = HelloSynth.class;

             InputStream is =

                aClass.getResourceAsStream("synth.xml");

             if (is == null) {

               System.err.println("Missing configuration file");

               System.exit(-1);

             }

             synth.load(is, aClass);

           } catch (ParseException e) {

             System.err.println("Bad configuration file");

             System.exit(-2);

           }

           try {

             UIManager.setLookAndFeel(synth);

           } catch

              (javax.swing.UnsupportedLookAndFeelException e) {

             System.err.println("Cannot change to Synth");

             System.exit(-3);

           }

           JFrame frame = new JFrame("First");

           frame.setDefaultCloseOperation(EXIT_ON_CLOSE);

           JLabel label = new JLabel("Hello, Synth");

           label.setHorizontalAlignment(JLabel.CENTER);

           frame.add(label);

           frame.setSize(300, 100);

           frame.setVisible(true);

         }

       };

       EventQueue.invokeLater(runner);

     }

   }



HelloSynth 创建了一个新的SynthLookAndFeel的对象并用load办法读取xml文件:synth.xml。
注意synth.load(InputStream,Class< ?>) 的两个参数,InputStream不用进一步讲解,就是读取xml文件的数据流,Class是数据
↑返回目录
前一篇: J2SE1_5 注释语法新鲜试用
后一篇: Swing中的getContentPane()方法