Variável publica

10 respostas
M

Olá pessoal, tudo bem?

Estou com um pequeno problema que não estou conseguindo solucionar.
No programa que estou fazendo tenho um jList, um label e um textpane. Ele serve pra executar os programas que estão na lista.
Quando clico sobre um dos progrmaas que estão na lista, a imagem do programa deve aparecer no label e uma pequena descrição deve aparecer também no textpane. Tudo está funcionando perfeitamente, tirando a troca da imagem no Label após selecionar o item no jList. vejam o código

private JLabel getJLabel(){
			getJList().addMouseListener(new MouseAdapter(){
		        public void mouseClicked(MouseEvent e){
			String lista_label=getJList().getSelectedValue().toString();
			//System.out.println(lista_label+" label");
			
		}});
	
		ImageIcon image = new ImageIcon(lista_label);
		JLabel Label = new JLabel(image);
		getLayeredPane().add(Label, new nteger(Integer.MIN_VALUE));
		Label.setSize(387, 271);
		Label.setLocation(297, 70);
	
		return Label;
	}

Como voces podem ver, eu pego o que está selecionado no jList e guardo na variavel lista_label

A função imageIcon deveria receber a variavel, trocando sempre que fosse selecionado uma nova op-ção na lista. Só que efetuando esse processo, o imageIcon não reconhece a variavél.
Como posso resolver esse problema?

Abraços
Rodrigo Galan

10 Respostas

D

coloque como atributo dessa classe

M

você poderia me explicar melhor hehehe… não manjo muito disso :slight_smile:

D

voce pode declarar essa variavel lista_label como atributo da classe… logo no começo do codigo assim:

public class <nome da classe>{

   private String lista_label;

}
M

Então… eu criei a lista_label como publico… mas quando vou compilar o código… da a seguinte mensagem

at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:248)
	at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
	at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

Se no campo ImageIcon image = new ImageIcon(lista_label); tirar e colocar ImageIcon image = new ImageIcon(“imagem.png”); sai o erro.

Será que é alguma imcompatiblidade com o imageicon? ou será que preciso declarar a variavel com outro tipo de parametro?

Abraços
Galan

D

coloque toda a mensagem de erro gerada… 8O

M

A mensagem gerada é a seguinte:

Uncaught error fetching image: java.lang.NullPointerException at java.io.FileInputStream.<init>(FileInputStream.java:103) at java.io.FileInputStream.<init>(FileInputStream.java:66) at sun.awt.image.FileImageSource.getDecoder(FileImageSource.java:35) at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:248) at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172) at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

O código completo da classe é a seguinte:

private JLabel getJLabel(){


		
		getJList().addMouseListener(new MouseAdapter(){
		public void mouseClicked(MouseEvent e){

		String lista_label=getJList().getSelectedValue().toString();
		System.out.println(lista_label+" label");
		getLayeredPane().add(Label, new nteger(Integer.MIN_VALUE));

			
			}});

		ImageIcon image = new ImageIcon(lista_label);
		JLabel Label = new JLabel(image);
		Label.setSize(387, 271);
		Label.setLocation(297, 70);
return Label;
	}

Declaração das variáveis

public String lista_label;
D

faz o seguinte:

muda parte do codigo para:

private JLabel getJLabel(){


      
      getJList().addMouseListener(new MouseAdapter(){
      public void mouseClicked(MouseEvent e){

      lista_label=getJList().getSelectedValue().toString();
      System.out.println(lista_label+" label");
      getLayeredPane().add(Label, new nteger(Integer.MIN_VALUE));

         
         }});

      ImageIcon image = new ImageIcon(lista_label);
      JLabel Label = new JLabel(image);
      Label.setSize(387, 271);
      Label.setLocation(297, 70);
return Label;
   }

eh pra tirar a ‘String’ da frente do lista_label. So dentro desse metodo!

M

Já testei assim também. não funciona.. parece que o imageicon não consegue ler arquivos usando esse método..

Estranho é que compilar normal. mas aparece essa mensagem:
Uncaught error fetching image:
java.lang.NullPointerException
        at java.io.FileInputStream.<init>(FileInputStream.java:103)
        at java.io.FileInputStream.<init>(FileInputStream.java:66)
        at sun.awt.image.FileImageSource.getDecoder(FileImageSource.j
        at sun.awt.image.InputStreamImageSource.doFetch(InputStreamIm
ava:248)
        at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172
        at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)
[quote]
E o terminal fica travado.. como se a aplicação estivesse aberta.

Abraços
Galan[/quote]
D

muda isso também

public class <nome da classe>{

   private String lista_label = "imagem.png";

}
M

pelo que to vendo… o imageicon não suporta isso mesmo. Alguem conhece um substituto do imageicon, que possibilita o carregamento através de string?

Abraços
Galan

Criado 29 de abril de 2005
Ultima resposta 29 de abr. de 2005
Respostas 10
Participantes 2