Adicionar imagem jDesktopPane?

5 respostas
laercio

Olá.

Eu tenho um jFrame principal com jMenubar e um jDesktopPane onde são
abertos os jInternalframe que são chamados pelos jMenuItem dos jMenu, e
gostaria que meu aplicativo iniciasse com uma imagem no jDesktopPane.

Será que tem como adicionar uma imagem no jDesktopPane ?
Uma vez que daria outra “cara” para a tela do sistema.

Se alguem souber de algum tutorial que ensine ou puder me dar uma ideia
de como fazer isso ou ainda conhecer outra forma.

Vlw.

5 Respostas

R

É possível adicionar uma imagem a um JDesktopPane sem problemas. De uma olhada neste tópico:

http://www.guj.com.br/posts/list/39131.java#220486

Nele eu adicionei uma classe que faz isto para você.
Qualquer dúvida é só falar.

Espero ter ajudado.

laercio

E ae cara valeu pela ajuda, por eu estar iniciando agora em java nao sei muito bem o que cada metodo especifico que voce usou faz,
mas eu entendi o que o metodo faz, mas ainda nao esta dando certo, pois esse erro é mostrado.

O que eu posso estar fazendo de errado ?

linha 32 : image = new ImageIcon(this.getClass().getResource(caminhoImagem));

O erro é esse:

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at javax.swing.ImageIcon.(ImageIcon.java:138)

at br.com.strategos.materiaisdeconstrucao.principal.DecoratedDesktopPane.(DecoratedDesktopPane.java:32)

at br.com.strategos.materiaisdeconstrucao.modulos.TelaPrincipal.(TelaPrincipal.java:40)

at br.com.strategos.materiaisdeconstrucao.modulos.TelaPrincipal$9.run(TelaPrincipal.java:225)

at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:461)

at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:242)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:163)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:157)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:149)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
R

Você deve fazer da seguinte forma:

DecoratedDesktopPane pane = new DecoratedDesktopPane(imagem);

E em imagem vai o caminho da sua imagem, porém este eh o caminho de uma imagem no CLASSPATH da aplicação, esta imagem deve estar dentro do jar da aplicação.

É desta forma que você está fazendo?

laercio

sim

dentro do projeto tem uma pasta image e dentro dela tem um arquivo image.jpg

e chamo assim

DecoratedDesktopPane desktopPane = new DecoratedDesktopPane("/image/image.jpg");

cara, vou estuda um pouco mais esse código para saber exatamente o que esta fazendo, eu estou achando meio estranho, mas assim que tentar de tudoooo e não conseguir volto a te enche o saco hehe.

muito obrigado.

root_

Esse codigo ta bem simples, e resolve muito bem esse problema de Imagem de Background no JDesktopPane, pelo menos em meu caso. xD

import javax.swing.*;
 import java.awt.*;
 import java.awt.event.*;
 public class BGDesktopPane extends JFrame
 {
   private static Image img; 
   private JDesktopPane dp1;
   public BGDesktopPane()
   {
       try
        {
            img = javax.imageio.ImageIO.read(new java.net.URL(getClass().getResource("kurumin.jpg"), "kurumin.jpg"));
 
        }
        catch(Exception e){} [/b]
 
     dp1 = new JDesktopPane()
     {
         public void paintComponent(Graphics g)
         {
           super.paintComponent(g);
           [b]if(img != null)
           {
               g.drawImage(img, 0,0,this.getWidth(),this.getHeight(),this);
               g.drawString("Background Carregado com Sucesso!!!", (this.getWidth()/2), (this.getHeight()/2) );
           }
          else
               g.drawString("Image not found", 50,50);
           /* O repaint e o VAlidade aparentimente n fazem diferença. Caso
              encontrem algum bom motivo para usa-los, postem, please! xD
           */
           //super.repaint();
           //super.validate();
         }
 
     };
      addWindowListener(new WindowAdapter()
       {
 
           public void windowOpened(WindowEvent evt)
           {
               formWindowOpened(evt);
           }
        }
      );
 
 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
     getContentPane().add(dp1);
     setSize(img.getWidth(null),img.getHeight(null));
     setVisible(true);
     pack();
   }
    private void formWindowOpened(WindowEvent evt)
     {
         setLocationRelativeTo(null);
         setExtendedState(6);
     }
 
   public static void main(String[] args)
   {
          new BGDesktopPane();
   }
 }
Criado 7 de novembro de 2006
Ultima resposta 20 de abr. de 2007
Respostas 5
Participantes 3