Problema com JFrame/ImageIcon/JInternalFrame

Olá pessoal (mais uma vez),

novamente aconteceu um problema no meu programa e preciso da ajuda de vcs,vou começar do começo:

Tenho uma janela principal (JFrame) que possui um menu e um painel(JPanel) criei um ImageIcon com uma figura para ficar de fundo na tela principal, ou seja, criei tb um JLabel onde ele recebe como parâmetro do construtor o ImageIcon criado anteriormente,continuando, fiz o setBounds desse JLabel e o adicionei no painel da janela principal (JFrame) até ai está tudo correto a imagem apareceu perfeitamente na janela principal.

Agora vamos supor que o usuário clique no JMenuItem da barra de menus da janela principal abrindo assim um JInternalFrame ai que está o problema, quando o JInternalFrame abre aparece somente os JTextField existentes e nada mais, nem a borda, nem os JButton,nem o botão de fechar do JInternalFrame, resumindo nada, o pior é que eu não tenho nem idéia do que pode estar acontecendo alguém pode me ajudar???

Obrigado

Marcos

Eh o seguinte cara…

Você deve olhar as propriedades da janela desse JInternalFrame e tambem deve setar o tamanho da janela da forma q apareça todos componentes…

Naum sei se entendi errado, mas acho q eh isso…
Feito…qualquer coisa, posta ai…

Vc tah abrindo esse JInterframe dentro do DesktopPane ? E tua imagem de fundo tb está no desktoppane ?

Olha é o seguinte vou ver se respondo as duas questões uma do sacchet e outra do brlima.

1°(sacchet) As configurações do JInternalFrame estão corretas porque eu tentei colocar a figura na janela principal depois que o JInternalFrame estava funcionando perfeitamente, logo seu tamanho não precisa ser mudado porque todos os componentes estavam aparecendo dentro dele.

2°(brlima)Não, a figura (na verdade o JLabel que contem a figura) esta sendo adicionada no painel da janela principal enquanto o JInternalFrame que está sendo aberto após o evento de clique no JMenuItem está sendo adicionado diretamente na janela principal (JFrame).

Esta imagem é de antes de colocar a figura e o JInternalFrame aparece perfeitamente:

esta mostra a janela principal com a figura colocada mas antes de chamar o JInternalFrame

E finalmente esta última mostra o erro quando o JInternalFrame é chamado onde as únicas coisas que aparecem são os JTextField

Obs.: este JInternalFrame é o mesmo da primeira imagem sem nenhuma modificação…

Acho que agora vcs entenderão melhor

Espero que vcs me ajudem

Obrigado

Marcos

Existe alguma possibilidade de vc usar o JDesktopPane para incluir o JInternalFrame dentro ? E dentro desse desktop vc coloca seu background ( imagem ) ??? Acho que é o mais correto… Caso contrario, aconselho vc fazer o seguinte:

  • usa o cardLayout e coloca o lcabel em um e o internalFrame em outro, e fica controlando por ai…

Mas prefiro a saida do JDesltopPane.

Flw!

Como setar um plano de fundo no JDesktopPane:

[quote]JDesktopPane é um JLayeredPane. Adicione um JLabel com o ImageIcon usando: desktopPane.add(child, JLayeredPane.FRAME_CONTENT_LAYER)[/quote]

Crie i JDesktopPane e faça o seguinte:

JDesktopPane jdp = new JDesktopPane(); bla bla bla...
JLabel labelFundo = new JLabel(); //label com a imagen....

jdp.add(labelFundo);
jdpPricipal.setLayer(labelFundo, -1, -1);//Pra garantir que ele sempre ficará por baixo....

Pronto :slight_smile:

Outra forma de deixar a imagem de fundo como eu uso nos meus programas,alterando o JDesktopPane e escrevendo um paintComponent:

JDesktopPane desktop; desktop = new JDesktopPane(){ Image im = (new ImageIcon("background.jpg")).getImage(); public void paintComponent(Graphics g){ g.drawImage(im,0,0,this); } };//fim do JDesktopPane
A imagem sempre ficará no fundo!!! :wink:

Olha o código que eu tentei usar.

Background.java

[code]
import java.awt.Dimension;
import java.awt.Graphics;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class Background extends JPanel {
private ImageIcon image;

public Background() {
	image = new ImageIcon("/img/background.png");
}

public void paintComponent(Graphics g) {
	super.paintComponent(g);
	image.paintIcon(this, g, 0, 0);
}

public Dimension getPreferredSize() {
	return new Dimension (image.getIconWidth(),
	image.getIconHeight() );
}

}[/code]

Como fazer com que a imagem fique no fundo do JDesktopPane, somente do primeiro frame.

Fico no aguardo.

att,
JP®