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
  1. 確認してください。特に、@trashgod基本的なものを示していますが、BasicXxxUIの優れたコード回避策を使用して回答してください。

  2. 私はNimbus Look and Feelむしろ先史時代の平凡なものを使用したいと思いますSynth

  3. NimbusGUI、aaaa、さらにいくつかのバグと同様の問題があります、

  4. Nimbus(プレーンに基づくSynt)最も簡単な方法であり、私たちの周りにはいくつかの素晴らしいハックがあります

于 2012-07-19T16:12:53.210 に答える
2

Advanced Synthで良い例を見つけることができます。

この例では、次のことがわかります。

SynthLookAndFeel synth = new SynthLookAndFeel();
synth.load(SynthFrame.class.getResourceAsStream("demo.xml"), SynthFrame.class);
UIManager.setLookAndFeel(synth);

そして、この XML が含まれるクラスと同じパッケージにdemo.xml存在し ます。demo.synthSynthFrame

<imageIcon id="check_off" path="images/checkbox_off.png"/>

パッケージcheckbox_off.pngに住んでいる場所。demo.synth.images

于 2012-07-19T16:09:20.520 に答える
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 に答える