[Resolvido] Dúvida com JDesktopPane e InternalFrame

Olá galera, se eu estiver na área errada, me desculpem, eu entrei hoje no fórum, mas enfim…

Estou querendo saber como eu faço um desktop pane, eu tentei seguir os exemplos que tem na documentação da Oracle e não consegui
Pretendo fazer o seguinte: Tenho várias classes que criam telas, ao invés de ficar criando elas em novas janelas, pretendo apenas fazer uma unica janela, que contenha elas dentro (como se fosse um desktop mesmo), mas ainda não entendi como funciona o desktop pane, agradeço quem me ajudar

Não entendi direito sua dúvida, poderia mostrar algum código?

Mas o conceito básico seria:

Você tem um JFrame, que você deve acertar os Bounds e torna-lo visivel
que no ContentPane você deve adicionar um JDesktopPane, e novamente acertar os bounds dependendo do seu LayoutManager.
E no JDesktopPane você adiciona um JInternalFrame, novamente acertando seu Bounds dependendo do seu LayoutManager, só o JInternalFrame também precisa ser setado para Visible

Olha, aqui está o código

[code]import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

import configuracoes.*;

@SuppressWarnings(“serial”)
public class TelaPrincipal extends JFrame implements ActionListener
{
int tamanho[] = {1200, 800};
JMenuItem jdbc, video, sair;
JMenu opcoes;
JMenuBar barra;
JButton btadd, btrem, btpro, btatu;
JDesktopPane desktop = new JDesktopPane();
public TelaPrincipal(String nome)
{
super(“Teste”);
setVisible(true);
setLayout(null);
setSize(tamanho[0], tamanho[1]);
setLocationRelativeTo(null);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setResizable(false);

	JPanel pitens = new JPanel();
	
	pitens.setLayout(null);
	
	desktop.setBounds(0, 0, tamanho[0], tamanho[1]);

	jdbc = new JMenuItem("JDBC");
	video = new JMenuItem("Vídeo");
	sair = new JMenuItem("Sair");

	btadd = new JButton("Adicionar");
	btrem = new JButton("Remover");
	btpro = new JButton("Procurar");
	btatu = new JButton("Atualizar");

	btadd.addActionListener(this);
	btrem.addActionListener(this);
	btpro.addActionListener(this);
	btatu.addActionListener(this);

	jdbc.addActionListener(this);
	video.addActionListener(this);
	sair.addActionListener(this);

	opcoes = new JMenu("Opções");

	barra = new JMenuBar();

	opcoes.add(jdbc);
	opcoes.addSeparator();
	opcoes.add(video);
	opcoes.addSeparator();
	opcoes.add(sair);

	barra.add(opcoes);

	barra.setBounds(0, 0, tamanho[0], 23);
	
	pitens.setBounds(10, 100, 400, 400);
	
	btadd.setBounds(10, 10, 100, 23);
	btpro.setBounds(120, 10, 100, 23);
	btrem.setBounds(10, 40, 100, 23);
	btatu.setBounds(120, 40, 100, 23);
	
	pitens.add(btadd);
	pitens.add(btpro);
	pitens.add(btrem);
	pitens.add(btatu);

	desktop.setBackground(new Color(120, 120, 120));
	desktop.add(barra);
	
	getContentPane().add(desktop);
}
@Override
public void actionPerformed(ActionEvent e)
{
	if(e.getSource() == btadd)
	{
		new TelaAdd();
	}
	else if(e.getSource() == btrem)
	{
		
	}
	else if(e.getSource() == btpro)
	{
		new TelaProcurar();
	}
	else if(e.getSource() == btatu)
	{
		
	}
	else if(e.getSource() == jdbc)
	{
		new TelaJDBC();
	}
	else if(e.getSource() == video)
	{
		new TelaVideo();
	}
	else if(e.getSource() == sair)
	{
		new TelaLogin();
		this.dispose();
	}
}

}[/code]

Essa é a tela do DesktopPane, digamos que eu queira adicionar uma classe que eu criei (TelaAddGenero) nela

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

@SuppressWarnings("serial")
public class TelaAddGenero extends JFrame implements ActionListener
{
	public TelaAddGenero()
	{
		super("Adicionar um gênero");
		setLayout(null);
		setVisible(true);
		setSize(350, 250);
		setLocationRelativeTo(null);
		setResizable(false);
		setDefaultCloseOperation(DISPOSE_ON_CLOSE);
	}
	@Override
	public void actionPerformed(ActionEvent e)
	{
	}

}

Como eu faria pra add essa classe (TelaAddGenero) dentro da TelaPrincipal?

a classe TelaAddGenero deve extender JInternalFrame e não JFrame, para então
desktop.add(new TelaAddGenero());

Foi, só mais uma pergunta, como eu faço pra ela ter os ícones como minimizar, etc?

jInternalFrame.setMaximizable(true);
jInternalFrame.setClosable(true);
Minimizar se não me engano não da. você pode esconder:
Com algum botão, mas o frame interno não pode ser minimizado.

Para traze-lo maximizado é:
setMaximum(true);
Atenção isso gera uma exceção e só funciona se o frame estiver visivel

Valeu, funcionou =)

De nada, e por favor edite o nome do tópico com “[Resolvido]”