Tratando Imagens em uma Aplicação Java GUI

Conteúdo

O conteúdo desta página se aplica ao NetBeans IDE 6.8, 6.9, 7.4 e 8.0

Para concluir este tutorial, você precisa dos seguintes recursos e softwares.

Software ou Recurso Versão Necessária
NetBeans IDE Versão 7.4 ou 8.0
JDK (Java Development Kit) Versão 6, 7 ou 8

Introdução

O tratamento de imagens em uma aplicação é um problema comum para muitos programadores iniciantes em Java. A forma padrão de acessar as imagens em uma aplicação Java é por meio do método getResource(). Este tutorial mostra como usar o GUI Builder do IDE para gerar o código a fim de que inclua imagens (e outros recursos) em sua aplicação. Além disso, você aprenderá como personalizar a forma na qual o IDE gera o código de tratamento de imagens.

A aplicação resultante deste tutorial será um JFrame simples que contém um JLabel que exibe uma única imagem.

Criando a Aplicação

  1. Escolha Arquivo > Novo Projeto.
  2. No assistente Novo Projeto, selecione Java > Aplicação Java e clique em Próximo.
  3. Em Nome do Projeto, digite ImageDisplayApp.
  4. Desmarque a caixa de seleção Criar Classe Principal.

    Assistente Novo Projeto

  5. Clique em Finalizar.

Criando o Form da Aplicação

Nesta seção, você cria o form JFrame e adiciona um JLabel ao form.

Para criar o form JFrame:

  1. Na janela Projetos, expanda o nó ImageDisplayApp.
  2. Clique com o botão direito do mouse no nó Pacotes de Código-fonte e escolha Novo > Form JFrame.
  3. Em Nome da Classe, digite ImageDisplay.
  4. Em Nome do Pacote, digite org.me.myimageapp.
  5. Clique em Finalizar.

Para adicionar o JLabel:

  • Na Paleta, selecione o componente Label e arraste-o para o JFrame.

Até este momento, o form deve ser semelhante à seguinte imagem:

Gerado form com o label adicionado

Adicionando um Pacote na Imagem

Ao usar imagens ou outros recursos em uma aplicação, normalmente você cria um pacote Java separado para os recursos. No seu sistema de arquivos local, um pacote corresponde a uma pasta.

Para criar um pacote para a imagem:

  1. Na janela Projetos, clique com o botão direito do mouse no nó org.me.myimageapp e escolha Novo > Pacote Java.

    Adicionando um novo pacote Java

  2. Clique em Finalizar.

Na janela Projetos, você deve ver um novo pacote que aparece na pasta Pacotes do Código-fonte.

Janela Projetos

Exibindo a Imagem no Label

Nesta aplicação, a imagem será incorporada em um componente JLabel.

Para adicionar a imagem ao label:

  1. No Designer de GUI, selecione o label que adicionou ao seu form.
  2. Na janela Propriedades, clique na categoria Propriedades e role até a propriedade do ícone.
  3. Clique no botão de reticências (...).
    O editor de propriedades do ícone é exibido.

    Editor de Propriedades do Ícone

  4. Na caixa de diálogo da propriedade do ícone, clique em Importar para o Projeto.
  5. Na seletor de arquivos, vá até qualquer imagem que esteja em seu sistema que você queira usar. Em seguida, clique em Próximo.
  6. Na página Selecionar pasta de destino do assistente, selecione a pasta newpackage e clique em Finalizar.

    Selecione Pasta de Destino página do assistente Importar Imagens para Projeto

  7. Clique em OK para fechar a caixa de diálogo de propriedade do ícone.

Após clicar em OK, o IDE faz o seguinte:

  • Copia a imagem para seu projeto. Portanto, quando você constrói e distribui a aplicação, a imagem é incluída no arquivo JAR distribuível.
  • Gera o código na classe ImageDisplay para acessar a imagem.
  • Exibe a sua imagem no label na view Design do seu form.

    Imagem adicionada ao label

Neste momento, você pode realizar alguns procedimentos simples para melhorar a aparência do form, como:

  • Na janela Propriedades, selecione a propriedade text e delete jLabel1. Tal valor foi gerado pelo GUI Builder para exibir o texto do label. No entanto, você está usando o label para exibir uma imagem em vez do texto, de modo que o texto não seja necessário.
  • Arraste o jLabel1 para o centro do form.

    A view Design da classe ImageDisplay com a imagem centralizada

Para exibir o código gerado:

  1. No Designer do GUI, clique no botão Código-fonte. (Selecione Exibir > Barra de Ferramentas Editor de Código-fonte do menu principal se o botão Código-fonte estiver oculto.)
  2. Role até linha que diz Código Gerado.
  3. Clique no sinal de mais (+) à esquerda da linha Código Gerado para exibir o código que o Designer de GUI gerou.

A linha-chave é a seguinte:

jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/me/myimageapp/newpackage/image.png"))); // NOI18N

Visto que você usou o editor de propriedades da propriedade do Ícone do jLabel1, o IDE gerou o método setIcon. O parâmetro de tal método contém uma chamada ao método getResource() em uma classe anônima interna de ImageIcon. Observe que o caminho gerado da imagem correspondente à sua localização na estrutura de pacote da aplicação.

Observações:

  • Se você usar a opção Imagem Externa no editor de propriedades do ícone, o IDE gerará um caminho absoluto para a imagem em vez de copiar a imagem no seu projeto. Portanto, a imagem seria exibida ao executar a aplicação no sistema, mas possivelmente não seria exibida ao executar a aplicação em outro sistema.
  • O método getResource também é útil para acessar outros tipos de recursos, como arquivos de texto que contêm dados que a aplicação talvez precise usar.

Para registrar handlers de evento para eventos do mouse no JLabel:

Na View Design, clique com o botão direito do mouse em JLabel e escolha Eventos > Mouse > mouseClicked/mousePressed/mouseReleased no menu pop-up.
Um handler de evento é gerado para o evento correspondente.

Observação: você pode obter coordenadas do mouse (por exemplo, a localização de um clique do mouse) no handler de evento usando os métodos event.getPoint(), event.getX() ou event.getY(). Consulte Classe MouseEvent para obter detalhes.

Exibindo a imagem como Plano de Fundo no Quadro

Não há nenhum suporte direto para uma imagem de segundo plano do JFrame no GUI Builder, já que não há nenhum suporte direto para uma imagem de segundo plano do JFrame no Swing.
De qualquer forma, há diversas formas indiretas de atingir tal objetivo. Nesta aplicação, o JLabel com a imagem será embutido dentro do componente JFrame, enquanto que um JPanel transparente será colocado sobre o JLabel e usado como o principal de todos os componentes.

Para adicionar um JPanel transparente na JFrame com a imagem:

  1. Escolha Arquivo > Novo Projeto.
  2. No assistente Novo Projeto, selecione Java > Aplicação Java e clique em Próximo.
  3. Em Nome do Projeto, digite BackgroundImageApp.
  4. Desmarque a caixa de seleção Criar Classe Principal.

    Criando um novo projeto

  5. Clique em Finalizar.
  6. Na janela Projetos, expanda o nó BackgroundImageApp.
  7. Clique com o botão direito do mouse no nó Pacotes de Código-fonte e escolha Novo > Form JFrame.
  8. Em Nome da Classe, digite ImageDisplay.
  9. Em Nome do Pacote, digite org.me.mybackgroundapp.

    Adicionando um novo form

  10. Clique em Finalizar.
  11. Na view Design, clique com o botão direito do mouse em JFrame e selecione Definir Layout > Layout do Conjunto de Grades no menu pop-up.
  12. Clique com o botão direito do mouse em JFrame e selecione Adicionar da Paleta > Contêineres Swing > Painel no menu pop-up.
  13. Na janela Propriedades, desmarque a propriedade opaque do jPanel.
  14. Clique com o botão direito do mouse em JFrame e selecione Adicionar da Paleta > Controles do Swing > Label no menu pop-up.
  15. Na janela Projetos, clique com o botão direito do mouse no nó org.me.mybackgroundapp e escolha Novo > Pacote Java.
  16. Clique em Finalizar. Um novo pacote é adicionado.
  17. No Designer de GUI, selecione o label que adicionou ao seu form.
  18. Na janela Propriedades, clique na categoria Propriedades e role até a propriedade do ícone.
  19. Clique no botão de reticências (...).
  20. Na caixa de diálogo da propriedade do ícone, clique em Importar para o Projeto.
  21. Na seletor de arquivos, vá até qualquer imagem que esteja em seu sistema que você queira usar. Em seguida, clique em Próximo.
  22. Na página Selecionar Pasta de Destino do assistente, selecione a pasta de recursos newpackage e clique em Finalizar.

    Selecione Pasta de Destino página do assistente Importar Imagens para Projeto

  23. Clique em OK para fechar a caixa de diálogo de propriedade do ícone.
  24. No navegador, clique com o botão direito do mouse em jPanel e escolha Propriedades no menu pop-up.
  25. Na caixa de dialogo Propriedades, defina as propriedades Grid X, Grid Y, Weight X e Weight Y como 1 e a propriedade Fill como Both.

    Propriedades do painel

  26. Clique em Fechar.
  27. Repita as etapas 24 e 25 para o jLabel.
  28. Na caixa de diálogo Propriedades, selecione a propriedade text e delete jLabel1.

    Propriedades do label

    O segundo plano está pronto. Agora você pode arrastar um jLabel e um jTextField ao jPanel a partir da Paleta, por exemplo. Ambos serão exibidos sobre a imagem de segundo plano.

    Tela mostrando a view Design da classe Segundo Plano.

Observação: a vantagem da solução descrita é que a imagem de segundo plano é mostrada no período do projeto e no runtime.

Construindo e Executando a Aplicação

Agora que gerou o código para acessar e exibir a imagem, você pode construir e executar a aplicação para certificar-se de que a imagem está sendo acessada.

Você precisa, primeiro, definir a classe principal do projeto. Quando você define a classe principal, o IDE sabe quais classes executar quando o projeto é executado. Além disso, isso garante que o elemento Main-Class no arquivo JAR do projeto seja gerado quando você construir a aplicação.

Para definir a classe principal do projeto:

  1. Clique com o botão direito do mouse no nó do projeto ImageDisplayApp e escolha Propriedades.
  2. Na caixa de diálogo Propriedades do projeto, selecione a categoria Executar.
  3. Clique no botão Procurar ao lado do campo Classe Principal. Depois selecione a classe org.me.myimageapp.ImageDisplay.

    Selecionando a classe principal

  4. Clique no botão Selecionar Classe Principal.
  5. Clique em OK para fechar a caixa de diálogo Propriedades do Projeto.

Para construir o projeto:

  • Escolha Executar > Limpar & Criar Projeto (project_name) na barra de ferramentas principal.

Você pode exibir os produtos construídos da aplicação na janela Arquivos. A pasta build contém a classe compilada. A pasta dist contém um arquivo JAR executável que contém a classe compilada e a imagem.

A janela Arquivos com as pastas construir e distribuir é expandida

Para executar o projeto:

  • Escolha Executar > Executar Projeto (project_name) na barra de ferramentas principal.

Criando Código Personalizado

Em muitas aplicações, a imagem exibida não é determinada estaticamente como neste exemplo. Por exemplo, a imagem a ser exibida pode ser determinada por algo no qual o usuário clica.

Se precisar escolher a imagem a ser exibida programaticamente, você pode escrever seu próprio código personalizado para acessar e exibir recursos. O IDE impede que você escreva o código diretamente nos "blocos protegidos" da view Código-fonte que contém o código gerado pelo GUI Builder. No entanto, você pode inserir o código nos blocos protegidos usando os editores de propriedades que podem ser acessados na janela Propriedades. Ao usar os editores de propriedades desta forma, você garante que o código personalizado não se perda ao fazer alterações de design no GUI Builder.

Por exemplo, para escrever o código personalizado de uma propriedade icon do JLabel:

  1. Selecione JLabel na View Design ou na janela Navegador.
  2. Na janela Propriedades, clique no botão de reticências (...) ao lado da propriedade icon.
  3. Na lista drop-down da parte superior da caixa de diálogo, selecione a opção Código Personalizado.

O editor de propriedades do Ícone com a opção Código Personalizado selecionado

A opção Código Personalizado deste editor de propriedades permite que você mesmo preencha o parâmetro do método setIcon. Você pode preencher este parâmetro com a lógica necessária ou com uma chamada a um método diferente que você escreveu em outro lugar na classe.

A área de texto na qual você pode inserir o parâmetro setIcon

Resumo

Este tutorial mostrou como acessar imagens de uma aplicação que você criou no NetBeans IDE. O tratamento de imagens é abordado posteriormente no Tutorial do Java.

Observação: o exemplo oferecido neste tutorial é muito semelhante ao primeiro exemplo na seção Como Usar Ícones do Tutorial do Java. A diferença é que o código gerado neste tutorial usa o método setIcon do JLabel para aplicar o ícone no label. No exemplo do Tutorial do Java, o ícone é aplicado no label ao ser passado pelo seu construtor.


Consulte Também

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo