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