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???
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…
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…
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....
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!!!