Deitel Cap.: 11 (GUI), o que está errado?

8 respostas
Tiago_A_S

Sou iniciante e estou estudando o livro Deitel.
Eu uso o IDE NetBeans 6.1.
No Cap.: 11 (GUI)
Copiei isso:

[code]package demonstrandoaclassejlabel;

import java.awt.FlowLayout;// especifica como os componentes são organizados.
import javax.swing.JFrame;//fornece recursos básicos de janela.
import javax.swing.JLabel;//exibe textos e imagens.
import javax.swing.SwingConstants;//Constantes comuns utilizadas com swing.
import javax.swing.Icon;//interface utilizada para manipular imagens.
import javax.swing.ImageIcon;//Carrega imagens.

public class LabelFrame extends JFrame
{
private JLabel Label1;// JLabel apenas com texto.
private JLabel Label2;// JLabel Construído com texto e ícone.
private JLabel Label3;// JLabel com texto e ícones adicionados.

// Costrutor LabelFrame adiciona JLabels a JFrame

public LabelFrame()

{
super ("Teste JLabel");
setLayout(new FlowLayout()); //configura Layout de Frame.

// Construtor JLabel com um argumento de String.
Label1 = new JLabel ("Label whit Test");
Label1.setToolTipText("esse é o Label");
add(Label1);// adiciona o Label ao Frame.

// construtor Jlabel com String, ícon e argumentos de alinhamento.
Icon bug = new ImageIcon(getClass().getResource("violentos.gif"));
Label2 = new JLabel("Label whit Test and icon",bug,
SwingConstants.LEFT);


Label2.setToolTipText("Esse é o Label 2");
add(Label2);//adiciona o Labe2 ao Frame.


Label3 = new JLabel();//Construtor JLabel sem argumentos.
Label3.setText("Label whit icon and text at botton");
Label3.setIcon(bug);// adiciona o icon ao JLabel.
Label3.setHorizontalTextPosition(SwingConstants.CENTER);
Label3.setVerticalTextPosition(SwingConstants.BOTTOM);
Label3.setToolTipText("Esse é o Label 3");
add(Label3); //adiciona o Labe3 ao Frame.

}

}

package demonstrandoaclassejlabel;

/**
*
* @author Usuário
*/

import javax.swing.JFrame;

public class LabelText
{

public static void main (String args[])

{
LabelFrame labelFrame = new LabelFrame(); // Cria LabelFrame.
labelFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
labelFrame.setSize(275,180);//configura o tamanho do Frame.
labelFrame.setVisible(true); // exibe o Frame.

}
}

Mas não funciona!

Aparece isso:

init:
deps-jar:
compile:
run:
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.(ImageIcon.java:138)
at demonstrandoaclassejlabel.LabelFrame.(LabelFrame.java:36)
at demonstrandoaclassejlabel.LabelText.main(LabelText.java:23)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

O QUE ESTÁ ERRADO?

8 Respostas

ajfilho

Tá dando erro aqui:

Icon bug = new ImageIcon(getClass().getResource("violentos.gif"));

Essa imagem tá no mesmo pacote da classe LabelFrame?

Abraços!

P

Provavelmente o problema está na linha:

Icon bug = new ImageIcon(getClass().getResource("violentos.gif"));

O arquivo violentos.gif existe? Onde ele está localizado?

Tiago_A_S

A imagem violentos.gif esta aqui D:\Meus Documentos\Minhas imagens

está certo?

ajfilho

Quando você usa o getClass(), é retornado o caminho em que está a classe, logo a imagem será procurada nesse diretório.

Como não existe a imagem no diretório (package) em que a classe está , NullPointerException.

Abraços!

Tiago_A_S

Obrigado

mas desculpe a ignorância

onde está esse diretório (package)?

Marcio_Nogueira

O package de sua aplicação, você organiza toda a estrutura da aplicação baseada em packages. :wink:

Tiago_A_S

O package de sua aplicação, você organiza toda a estrutura da aplicação baseada em packages.

não compreendi
desculpe
sou inesperiente

podeia ser mais claro

obrigado…

ajfilho

Faz o seguinte, pega essa imagem e coloca no mesmo diretório em que está a sua classe. Depois você dá um clean no projeto e roda. Vai funcionar.

Aconselho você a voltar a ler o livro desde o primeiro capítulo para reler os conceitos de OO, classes, variáveis, pacotes, estruturas de controle, para depois sim começar a exercitar.

Abraços!

Criado 27 de janeiro de 2009
Ultima resposta 27 de jan. de 2009
Respostas 8
Participantes 4