2

我在用

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") 我想避免使用示例中显示的静态路径一样使用它。

跟进:

在此处输入图像描述

4

3 回答 3

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-07-19T16:09:20.520 回答
2
  1. 检查,特别是通过显示基本内容来回答,@trashgod但对 BasicXxxUI 有很好的代码解决方法

  2. 我宁愿使用Nimbus Look and Feel史前的和朴素Synth的,

  3. Nimbus与 GUI、aaaa 和一些错误有类似的问题,

  4. Nimbus(基于plain Synt)可能是最简单的方法,我们周围有一些很棒的黑客

于 2012-07-19T16:12:53.210 回答
0

您还可以通过传递文件的整个路径来添加 XML 文件

例如

SynthLookAndFeel laf = new SynthLookAndFeel();
laf.load(new URL("file:///D:/Demo/src/example1.xml"));
UIManager.setLookAndFeel(laf);

这个对我有用。试试你的应用程序

于 2013-06-29T18:34:30.663 回答