我正在尝试合成器样式,遇到了以下问题,经过大量研究后仍未找到答案。我有以下xml文件
<?xml version="1.0" encoding="UTF-8"?>
<synth>
<style id="button">
<state>
<color value="blue" type="BACKGROUND"/>
<color value="yellow" type="FOREGROUND"/>
</state>
</style>
<bind style="button" type="region" key="Button"/>
</synth>
以及以下Java代码,将该XML文件作为SynthLookAndFeel对象加载
private void initializeStyle() {
SynthLookAndFeel laf = new SynthLookAndFeel();
try {
laf.load(this.getClass().getResourceAsStream("Style.xml"), this.getClass());
UIManager.setLookAndFeel(laf);
} catch (ParseException | UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
}
当我尝试运行此代码时,出现以下异常
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: You must supply an InputStream, StyleFactory and Class or URL
我们欢迎任何有关如何解决此问题的建议。
最佳答案
您可以在Advanced Synth中找到一个很好的例子。
您可以在示例中看到:
SynthLookAndFeel synth = new SynthLookAndFeel();
synth.load(SynthFrame.class.getResourceAsStream("demo.xml"), SynthFrame.class);
UIManager.setLookAndFeel(synth);
并且
demo.xml
位于demo.synth
包中,与SynthFrame
类相同,该XML包含一些图像:<imageIcon id="check_off" path="images/checkbox_off.png"/>
checkbox_off.png
位于demo.synth.images
包中的位置。希望对您有所帮助。