Dúvida sobre Synth LookandFeel

8 respostas
HI7M4N

Olá pessoal, estou estudando sobre o Synth e encontrei vários exemplos na internet, só que todos em inglês, e por não saber ler muito bem, acabei tendo algumas dificuldades...

A primeira é a seguinte:

Eu peguei um dos exemplos que achei e coloquei no netbeans mas quando compilo gera o seguinte erro:

Exception in thread "main" java.lang.IllegalArgumentException: You must supply an InputStream, StyleFactory and Class or URL
at javax.swing.plaf.synth.SynthParser.parse(SynthParser.java:211)
at javax.swing.plaf.synth.SynthLookAndFeel.load(SynthLookAndFeel.java:589)
at Testes.Synth_LaF.main(Synth_LaF.java:33)
Java Result: 1

O código é esse:

public class Synth_LaF extends JFrame{

   

 public static void main(String[] args) throws ParseException, UnsupportedLookAndFeelException
 {

     String xmlFile = "demo.xml";

        if (args.length > 0) {
            xmlFile = args[0];
        }
        SynthLookAndFeel laf = new SynthLookAndFeel();
        laf.load(Synth_LaF.class.getResourceAsStream(xmlFile),
                 Synth_LaF.class);
        UIManager.setLookAndFeel(laf);

        JFrame frame = new JFrame("Test");
        frame.getContentPane().setLayout(new FlowLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new JTextField("example"));
        frame.pack();
        frame.show();
    }
}

A segunda dúvida é se alguem não sabe onde posso encontrar um tutorial em português? Mesmo que seja bem básico, e o resto eu pego em inglês mesmo.

8 Respostas

E

Imprima o valor de “Synth_LaF.class.getResourceAsStream(xmlFile)”. Se isso retornar null, então essa tal exceção será lançada.
Isso pode ocorrer, por exemplo, porque o arquivo XML estã em algum lugar errado.

HI7M4N

Mas, e qual seria o lugra certo? :?:

E

No mesmo diretório em que Synth_LaF.class está.

HI7M4N

Poxa agora quase funcionou. A janela chegou aparecer mas bugou e deu o seguinte erro:

Uncaught error fetching image:
java.lang.NullPointerException
at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:113)
at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

o arquivo xml ta assim:

<synth>
  <style id="default">
    <opaque value="true"/>
    <state>
      <color value="#404F97" type="BACKGROUND"/>
    </state>
    <font name="Lucida" size="12"/>
  </style>
  <bind style="default" type="region" key=".*"/>

  <style id="textfield">
    <state>
      <color value="white" type="BACKGROUND"/>
    </state>
    <imagePainter method="textFieldBorder" path="textfieldborder.png" sourceInsets="5 6 6 7" paintCenter="false"/>
    <insets top="5" bottom="6" right="7" left="6"/>
  </style>
  <bind style="textfield" type="region" key="TextField"/>
</synth>
E

Mesma coisa, você precisa acertar onde é que as figuras têm de estar. Provavelmente, é também no mesmo diretório onde o .class está.

O nome do arquivo tem de ser, exatamente, “textfieldborder.png”. Se estiver como “textfieldborder.PNG” (com PNG em maiúsculas) não vai funcionar.

HI7M4N

Tá obvio que a de erro ao carregar a imagem mas não tenho a menor idéia do porque, já que é a mesma imagem usada pelo exemplo do site

HI7M4N

eu ja copiei a imagem para todas as pastas do projeto do netbeans, e nada. Será q tem haver com o tipo do arquivo de imagem?

HI7M4N

Poxa finalmente consegui, realmente o nome do arquivo estava diferente. Muito obrigado entanglement não teria conseguido sem a sua ajuda.

Criado 13 de julho de 2010
Ultima resposta 13 de jul. de 2010
Respostas 8
Participantes 2