Tela MDI duplicada quando chamo a tabela clientes

3 respostas
Antonio_Ishac

Olá, tenho esse código MDI:

import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Mdi extends JFrame implements ActionListener, KeyListener {
	
	private static final long serialVersionUID = 1L;

		JDesktopPane desktop = new JDesktopPane();
		
		JMenuBar mnuBarra = new JMenuBar();
		//MENUS
		JMenu mnuArquivo = new JMenu("Arquivo");
		//SUBMENUS
		JMenuItem mnuClientes = new JMenuItem("Clientes");
		JMenuItem mnuFornecedores = new JMenuItem("Fornecedores");
		JMenuItem mnuProdutos = new JMenuItem("Produtos");
		JMenuItem mnuCartoes = new JMenuItem("Cadastro de Cartões");
		
	
	public Mdi(){
		super("Testando MDI");
		this.setBounds(100,100,800,600);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		this.add(desktop);
		
		mnuClientes.addActionListener(this);
		
		mnuBarra.add(mnuArquivo);
		mnuArquivo.add(mnuClientes);
		mnuArquivo.add(mnuFornecedores);
		mnuArquivo.add(mnuCartoes);
		this.setJMenuBar(mnuBarra);
		
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new Mdi();
	}

	public void actionPerformed(ActionEvent e) {
		Object o = e.getSource();
		if(o == mnuClientes){
			Clientes clientes = new Clientes();	
			clientes.criaClientes();			
		}		
	}

	public void keyPressed(KeyEvent arg0) {
				
	}

	public void keyReleased(KeyEvent arg0) {
				
	}

	public void keyTyped(KeyEvent arg0) {
				
	}
}

Na classe clientes o código é o seguinte:

import javax.swing.JInternalFrame;

public class Clientes extends JInternalFrame {
		
	private static final long serialVersionUID = 1L;
	
	JInternalFrame clientes = new JInternalFrame("Cadastro de Clientes", true, true, true, true);
	
	public void criaClientes(){					
		clientes.setBounds(10,10,600,400);		
		clientes.setVisible(true);
		Mdi tela = new Mdi();
		tela.desktop.add(clientes);
	}
}

O problema que está acontecendo é que quando clico no menu do MDI clientes ele abre a classe clientes só que ele duplica a tela MDI.

Este código para chamar a classe clientes eu fui testando até uma hora eu conseguir chamar.

Por favor me ajudem nesse problema que estou tendo.

Desde já agradeço pela atenção.

3 Respostas

T

Você está criando uma nova janela na linha Mdi tela = new Mdi(); ,
remova esta linha.

T
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class Mdi extends JFrame implements ActionListener, KeyListener {
	
	private static final long serialVersionUID = 1L;

		JDesktopPane desktop = new JDesktopPane();
		
		JMenuBar mnuBarra = new JMenuBar();
		//MENUS
		JMenu mnuArquivo = new JMenu("Arquivo");
		//SUBMENUS
		JMenuItem mnuClientes = new JMenuItem("Clientes");
		JMenuItem mnuFornecedores = new JMenuItem("Fornecedores");
		JMenuItem mnuProdutos = new JMenuItem("Produtos");
		JMenuItem mnuCartoes = new JMenuItem("Cadastro de Cartões");
		
	
	public Mdi(){
		super("Testando MDI");
		this.setBounds(100,100,800,600);
		
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		this.getContentPane().add(desktop);
		
		mnuClientes.addActionListener(this);
		
		mnuBarra.add(mnuArquivo);
		mnuArquivo.add(mnuClientes);
		mnuArquivo.add(mnuFornecedores);
		mnuArquivo.add(mnuCartoes);
		this.setJMenuBar(mnuBarra);
		
		this.setVisible(true);
	}

	public static void main(String[] args) {
		new Mdi();
	}

	public void actionPerformed(ActionEvent e) {
		Object o = e.getSource();
		if(o == mnuClientes){
			Clientes clientes = new Clientes();	
			desktop.add(clientes);
		}		
	}

	public void keyPressed(KeyEvent arg0) {
				
	}

	public void keyReleased(KeyEvent arg0) {
				
	}

	public void keyTyped(KeyEvent arg0) {
				
	}
}


class Clientes extends JInternalFrame {
		
	public Clientes(){					
		super("Cadastro de Clientes", true, true, true, true);
		setBounds(10,10,600,400);		
		setVisible(true);	
	}
}
Antonio_Ishac

Olá amigo, deu certinho, muito obrigado pela ajuda.

Valeu Mesmo.

Criado 7 de fevereiro de 2008
Ultima resposta 7 de fev. de 2008
Respostas 3
Participantes 2