size="48" style="ITALIC"/>
</state>
</style>
<bind style="button" type="region" key="Button"/>
</synth>
有一个指向 XML 文件的指针:style 标签中指定的 id 用来匹配 bind 标签中的 style 属性。这样,使用清单 3 中的 XML 定制按钮控件(由 bind 标签中的 key 属性确定)就会产生图 3 和图 4 所示的效果:
图 3. 24 点黑体 monospaced 字体
图 4. 48 点斜体 serif 字体
驯服Tiger: 当Ocean和Synth遇上Metal(4)
时间:2011-01-31 John Zukowski
用来生成清单 4 所示的图 3 和图 4 的完整程序(源文件可以从 下载区获得):
清单 4. 演示 Synth
import java.awt.EventQueue;
import java.io.InputStream;
import java.text.ParseException;
import javax.swing.JButton;
import javax.swing.JFrame;
import static javax.swing.JFrame.*;
import javax.swing.UIManager;
import javax.swing.plaf.synth.SynthLookAndFeel;
public class SynthTest {
public static void main(String args[]) {
Runnable runner = new Runnable() {
public void run() {
SynthLookAndFeel synth = new SynthLookAndFeel();
try {
Class aClass = SynthTest.class;
InputStream is = aClass.getResourceAsStream("file1.xml");
if (is == null) {
System.err.println("Unable to find theme configuration");
System.exit(-1);
}
synth.load(is, aClass);
} 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("Tester");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
JButton button = new JButton("Hello, World");
frame.add(button);
frame.setSize(400, 200);
frame.setVisible(true);
}
};
EventQueue.invokeLater(runner);
}
}
对于控制程序或 Synth 的使用来说,这里没有任何华而不实的地方,我们只是在了解 XML 控制文件的一些可用设置。
结束语
如果您厌倦了生硬的 Metal 外观,但对建立自己的外观也不是很感兴趣,那么 Metal 外观的 Ocean 主题为您提供了一个选择。而且对于 Tiger 来说,Synth 外观更有趣一些。根本不需要任何编程知识,您就可以从设计师那里得到一个非常棒的外观,他们是真正懂得如何搭配色彩的人。使用 Synth 的技巧在于掌握并运用 DTD。遵循描述 DTD 的 Synth 文件格式文档,您将会做得非常好。
本文配套源码 |