Tamanho incorreto no JInterNalFrame

Boa tarde pessoa, fiz uma janela principal com um menu e gostaria de quando foce clicado em determinado intem do menu fosse criado uma janela interna o codico ficou assim

public class Nomade extends AbstractAction {

	JFrame f;

	public Nomade(JFrame f) {
			
		this.f = f;

	}

	public void criarJanela(JFrame f){
		JInternalFrame janela = new JInternalFrame("Nômade", true, true, true);
		janela.setSize(750, 440);
		janela.setLocation(300, 100);
		janela.setVisible(true);
		f.add(janela);
		
		
	}
	
	public void actionPerformed(ActionEvent arg0) {
		
		criarJanela(f);

	
	}

}

Acontece que quado a janela interna é criada pelo evento ela aparece como um pequeno retangulo no centro da janela principal, não é criada do tamanho que desejo, alguem pode me ajudar?

Ninguem?

Bem, no NetBeans, quando eu mudo o Layout da tela para null, ele abre do jeito que você falou hehe

Tente ver se é isso amigo…

Abraços

Eu fiz um código de exemplo aqui, baseado na sua classe e funcionou… O JInternalFrame é exibido em modo maximizado, foi usado o BorderLayout.CENTER

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;

public class Teste extends JFrame {

    public static void main(String args[]) {
        new Teste().setVisible(true);
    }

    public Teste(){
        configuracoes();
    }
    private JButton botao = new JButton();

    private void configuracoes() {
        botao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoActionPerformed(evt);
            }
        });
        
        botao.setText("Criar JInternalFrame.");
        this.setPreferredSize(new Dimension(800, 400));
        this.add(botao, BorderLayout.EAST);
        this.setDefaultCloseOperation(2);
        pack();
    }

    private void botaoActionPerformed(java.awt.event.ActionEvent evt) {
        criarJanela(this);
    }

    public void criarJanela(JFrame f) {
        JInternalFrame janela = new JInternalFrame("Nômade", true, true, true);
        janela.setVisible(true);
        f.add(janela, BorderLayout.CENTER);
    }
}

Encontri o erro só que nãos consigo corrigilo.
Na verdade a InternalFrame é criada de forma correta, quando eu uso um JFrame comum, mas tenho a necessidade de colocar uma imagem de fundo no meu JFrame, então sobrescrevi alguns metodos para isso, só que ai o JInteralFrame não é criado de forma correta, segue o codgo do Frame com imagem de fundo.

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.net.URL;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class JFrameWithBackground extends JFrame {

	private Image bImage;

	// colocar uma figura na barra de título da janela  
		
	
	public JFrameWithBackground(String path) {
		this.bImage = this.createImage(path);
		this.initComponents();

		
	}

	public void initComponents() {

		super.setContentPane(new NewContentPane());

	}

	private Image createImage(String path) {

		return Toolkit.getDefaultToolkit().createImage(path);

	}

	private class NewContentPane extends JPanel {

		protected void paintComponent(final Graphics g) {

			super.paintComponent(g);D

			g.drawImage(bImage, 0, 0, this);

			
		}

	}

}

Alguem sabe me dizer onde esta errado, para que esse frame não gere o InternalFrame de forma correta?
De já agradeço a todos.

Vou testar aqui sua classe…

A foto no fundo da JFrame carrega normal, mas a InternalFrame não gera corretamente.

Adaptei a classe para a exibição de imagens em background e funcionou legal aqui… inclusive exibiu o JInterNalFrame em tamanho 100 X 100…

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JPanel;

public class TesteImagemBackground extends JFrame {
    
    public static void main(String args[]) {
        new TesteImagemBackground("C:\\Users\\user\\Desktop\\DSC00512.JPG").setVisible(true);
    }
    
    public TesteImagemBackground(String path) {
        this.bImage = this.createImage(path);
        configuracoes();
    }
    private JButton botao = new JButton();
    private Image bImage;
    private NewContentPane panel = new TesteImagemBackground.NewContentPane();
    
    private void configuracoes() {
        botao.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                botaoActionPerformed(evt);
            }
        });
        
        super.setContentPane(panel);
        panel.setVisible(true);
        
        botao.setText("Criar JInternalFrame.");
        this.setPreferredSize(new Dimension(800, 400));
        this.add(botao, BorderLayout.NORTH);
        this.setDefaultCloseOperation(2);
        pack();
    }
    
    private void botaoActionPerformed(java.awt.event.ActionEvent evt) {
        criarJanela(this);
    }
    
    public void criarJanela(JFrame f) {
        JInternalFrame janela = new JInternalFrame("Nômade", true, true, true);
        janela.setVisible(true);
        janela.setPreferredSize(new Dimension(100, 100));
        panel.add(janela, BorderLayout.SOUTH);
    }
    
    private Image createImage(String path) {
        return Toolkit.getDefaultToolkit().createImage(path);
    }
    
    private class NewContentPane extends JPanel {
        @Override
        protected void paintComponent(final Graphics g) {
            super.paintComponent(g);
            g.drawImage(bImage, 0, 0, this);


        }
    }
}

Faz o teste … qualquer dúvida poste ai…

A minha InternalFrame será criada atravez de um JMenuItem, onde faço a divisão aki nesse codigo?
Tipo deixando somente os metodos que vão gerar a imagem de fundo no JFrame.

E se não for abusar, gostaria que me falace onde o porque estava a gerar o erro, para que eu possa aprender e não tornar a repeti-lo
de já muito obrigado.

Vou ter que ir votar agora e daqui duas horas volto pra gente tentar debugar essa classe…

[quote=giovanebmr]Vou ter que ir votar agora e daqui duas horas volto pra gente tentar debugar essa classe…
[/quote]

Beleza meu amigo, vou tentando tambem aki… sou bastante novo em Java essa é minha primeira aplicação então é meio complicado pra mim.

[quote=Ziru][quote=giovanebmr]Vou ter que ir votar agora e daqui duas horas volto pra gente tentar debugar essa classe…
[/quote]

Beleza meu amigo, vou tentando tambem aki… sou bastante novo em Java essa é minha primeira aplicação então é meio complicado pra mim.[/quote]

Consegui chegar no seguinte codigo, não sei se não removi coisa que não devia, mas a primeiro momento o Frame com imgem de fundo está correto, e o internalFrame tambem está correto, exeto um problema que menciono em outro poste “Trabalhando com paineis”

Aki vai o codigo, se puder analize pra mim se está tudo nos conformes mesmo.

import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class TesteImagemBackground extends JFrame {

	

	public TesteImagemBackground(String path) {
		this.bImage = this.createImage(path);
		configuracoes();
	}

	
	private Image bImage;
	private NewContentPane panel = new TesteImagemBackground.NewContentPane();

	private void configuracoes() {

		super.setContentPane(panel);	
	
	}

	private Image createImage(String path) {
		return Toolkit.getDefaultToolkit().createImage(path);
	}

	private class NewContentPane extends JPanel {
		@Override
		protected void paintComponent(final Graphics g) {
			super.paintComponent(g);
			g.drawImage(bImage, 0, 0, this);

		}
	}
}

E muito obrigado. :smiley:

Problema não resolvido…
:cry:

Agora parece ter resolvido, o codigo acima está certo, basta definir a InternalFrame como
BorderLayout.CENTER entãp elá abrirá corretamente.

Coloca todas as classes que vc ta usando aqui… pra mim entender a parada toda… pode ser?

[quote=Ziru]Agora parece ter resolvido, o codigo acima está certo, basta definir a InternalFrame como
BorderLayout.CENTER entãp elá abrirá corretamente.[/quote]

Exatamente… como a classe que eu te enviei antes… vc tem que definir o layout

A outra classe é um JFrame com a imagem de fundo, com uma barra de menu, e um JMenuItem que quando clicado cira essa InternalFrame