我正在使用
SynthLookAndFeel laf = new SynthLookAndFeel();
laf.load(MyJSlider.class.getResourceAsStream("/ui/demo.xml"), MyJSlider.class);
//laf.load(new URL("file:///var/tmp/demo.xml"));
我的 demo.xml 有以下内容:
<style id="SliderTrackStyle">
<opaque value="TRUE"/>
<state>
<imagePainter method="SliderTrackBackground" path="/var/tmp/JavaUnitTest/src/image/menu/bg.jpg" sourceInsets="0 0 0 0" />
</state>
</style>
<bind style="SliderTrackStyle" type="region" key="SliderTrack" />
导致错误:
run-single:
Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:115)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:125)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:263)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:205)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:169)
BUILD STOPPED (total time: 9 seconds)
避免并减少风险。
如何像 path=Menu.class.getResourceAsStream("/image/menu/bg.jpg")
一样使用它,我想避免使用示例中显示的静态路径。
跟进:
最佳答案
您可以在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
包中。
关于java - 如何将 SynthLookAndFeel 与 xml 文件一起使用,其中 xml 文件路径将使用 getResourceAsStream 方法加载文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11564597/