1

我正在尝试合成器风格,我遇到了以下问题,经过相当多的研究,我还没有找到答案。我有以下 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

任何有关如何解决此问题的建议都非常受欢迎。

4

2 回答 2

2

您可以在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.pngdemo.synth.images

我希望这可以帮助你。

于 2012-11-26T21:53:29.630 回答
0

主要课程:

SynthLookAndFeel lookAndFeel = new SynthLookAndFeel(); lookAndFeel.load(TestRApp.class.getResourceAsStream(synthFile), TestRApp.class); UIManager.setLookAndFeel(lookAndFeel);

synth.xml 文件

<style id="panelStyle">
    <imagePainter method="panelBackground" path="images/main-bg.png" sourceInsets="0 0 0 0" stretch="true"/>
</style>
<bind style="panelStyle" type="region" key="Panel"/>

于 2013-02-26T14:33:57.793 回答