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