JInternalFrame não funciona! (código em anexo)

3 respostas
F

Olá galera!
Tenho duas classes, ou seja, uma chamada FrameCadastroClienteJuridica que é o formulário para cadastro de Clientes e outra, que é a principal chamada (onde vai rodar o JDesktopPane) chamada DesktopTeste.
Quando rodo a classe principal o Frame FrameCadastroClienteJuridica abre fora do JDesktopPane.
Alguém poderia me ajudar dando uma olhada no código abaixo para ver onde estou errando?

Classe FrameCadastroClienteJuridica:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class FrameCadastroClienteJuridica extends JFrame{

	public FrameCadastroClienteJuridica()
	{
		super("Cadastro de Clientes");

		Container c = getContentPane();
		c.setLayout(null);

  JLabel jLabel_Codigo = new JLabel();
  JTextField jTextFieldCliente = new JTextField();
  JLabel jLabel_Cliente = new JLabel();
  JTextField jTextFieldCodigo = new JTextField();
  JLabel jLabel_Fantasia = new JLabel();
  JTextField jTextFieldFantasia = new JTextField();
  JLabel jLabel_CNPJ = new JLabel();
  JTextField jTextFieldCNPJ = new JTextField();
  JLabel jLabel_Insc_Est = new JLabel();
  JTextField jTextFieldInsc_Est = new JTextField();
  JLabel jLabel_Insc_Munic = new JLabel();
  JTextField jTextFieldInsc_Munic = new JTextField();
  JLabel jLabel7_Telefone1 = new JLabel();
  JLabel jLabel_Telefone2 = new JLabel();
  JLabel jLabel_Telefone3 = new JLabel();
  JLabel jLabel_Fax = new JLabel();
  JTextField jTextFieldTelefone1 = new JTextField();
  JTextField jTextFieldTelefone2 = new JTextField();
  JTextField jTextFieldTelefone3 = new JTextField();
  JTextField jTextFieldFax = new JTextField();
  JLabel jLabel_Caixa_Postal = new JLabel();
  JTextField jTextFieldCaixa_Postal = new JTextField();
  JLabel jLabel_Email = new JLabel();
  JTextField jTextFieldEmail = new JTextField();
  JLabel jLabel_Endereco = new JLabel();
  JTextField jTextFieldEndereco = new JTextField();
  JLabel jLabel_Complemento = new JLabel();
  JTextField jTextFieldComplemento = new JTextField();
  JLabel jLabel_Bairro = new JLabel();
  JTextField jTextFieldBairro = new JTextField();
  JLabel jLabel_CEP = new JLabel();
  JTextField jTextFieldCEP = new JTextField();
  JLabel jLabel_Cidade = new JLabel();
  JLabel jLabel_Estado = new JLabel();
  JLabel jLabel_Observacao = new JLabel();
  JTextField jTextFieldCidade = new JTextField();
  JTextField jTextFieldEstado = new JTextField();
  
  TextArea textAreaObservacao = new TextArea();
  JButton jButtonCadastrar = new JButton();

    jLabel_Codigo.setEnabled(true);
    jLabel_Codigo.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Codigo.setOpaque(false);
    jLabel_Codigo.setRequestFocusEnabled(true);
    jLabel_Codigo.setHorizontalAlignment(SwingConstants.LEADING);
    jLabel_Codigo.setText("Código:");
    jLabel_Codigo.setVerticalAlignment(javax.swing.SwingConstants.CENTER);
    jLabel_Codigo.setBounds(new Rectangle(2, 3, 42, 14));
    c.setLayout(null);
    this.getContentPane().setBackground(Color.lightGray);
    this.setDefaultCloseOperation(HIDE_ON_CLOSE);
    this.setSize(new Dimension(500, 700)); // largura, altura
    this.setTitle("Cadastro de Clientes (Pessoa Jurídica)");
    jTextFieldCliente.setBounds(new Rectangle(2, 71, 483, 22));
    jLabel_Cliente.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Cliente.setText("Cliente:");
    jLabel_Cliente.setBounds(new Rectangle(2, 53, 42, 15));
    jTextFieldCodigo.setBounds(new Rectangle(2, 21, 84, 22));
    jLabel_Fantasia.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Fantasia.setText("Fantasia:");
    jLabel_Fantasia.setBounds(new Rectangle(2, 103, 53, 15));
    jTextFieldFantasia.setBounds(new Rectangle(2, 120, 482, 22));
    jLabel_CNPJ.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_CNPJ.setText("C.N.P.J.:");
    jLabel_CNPJ.setBounds(new Rectangle(2, 152, 49, 15));
    jTextFieldCNPJ.setAlignmentY((float) 0.5);
    jTextFieldCNPJ.setBounds(new Rectangle(2, 168, 134, 22));
    jLabel_Insc_Est.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Insc_Est.setText("Inscrição Estadual:");
    jLabel_Insc_Est.setBounds(new Rectangle(185, 151, 109, 19));
    jTextFieldInsc_Est.setBounds(new Rectangle(182, 167, 134, 22));
    jTextFieldInsc_Est.setAlignmentY((float) 0.5);
    jLabel_Insc_Munic.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Insc_Munic.setText("Inscrição Municipal:");
    jLabel_Insc_Munic.setBounds(new Rectangle(353, 152, 119, 15));
    jTextFieldInsc_Munic.setAlignmentY((float) 0.5);
    jTextFieldInsc_Munic.setBounds(new Rectangle(351, 166, 134, 22));
    jLabel7_Telefone1.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel7_Telefone1.setText("Telefone 1:");
    jLabel7_Telefone1.setBounds(new Rectangle(2, 200, 71, 15));
    jLabel_Telefone2.setBounds(new Rectangle(125, 199, 71, 15));
    jLabel_Telefone2.setText("Telefone 2:");
    jLabel_Telefone2.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Telefone3.setBounds(new Rectangle(251, 198, 71, 15));
    jLabel_Telefone3.setText("Telefone 3:");
    jLabel_Telefone3.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Fax.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Fax.setText("Fax:");
    jLabel_Fax.setBounds(new Rectangle(374, 198, 71, 15));
    jTextFieldTelefone1.setBounds(new Rectangle(1, 215, 110, 22));
    jTextFieldTelefone1.setAlignmentY((float) 0.5);
    jTextFieldTelefone2.setAlignmentY((float) 0.5);
    jTextFieldTelefone2.setBounds(new Rectangle(125, 216, 110, 22));
    jTextFieldTelefone3.setBounds(new Rectangle(249, 216, 110, 22));
    jTextFieldTelefone3.setAlignmentY((float) 0.5);
    jTextFieldFax.setAlignmentY((float) 0.5);
    jTextFieldFax.setBounds(new Rectangle(372, 216, 110, 22));
    jLabel_Caixa_Postal.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Caixa_Postal.setText("Caixa Postal:");
    jLabel_Caixa_Postal.setBounds(new Rectangle(3, 245, 84, 15));
    jTextFieldCaixa_Postal.setAlignmentY((float) 0.5);
    jTextFieldCaixa_Postal.setBounds(new Rectangle(2, 261, 75, 22));
    jLabel_Email.setBounds(new Rectangle(126, 244, 109, 19));
    jLabel_Email.setText("E-mail:");
    jLabel_Email.setFont(new java.awt.Font("Dialog", 1, 11));
    jTextFieldEmail.setBounds(new Rectangle(125, 261, 355, 22));
    jTextFieldEmail.setAlignmentY((float) 0.5);
    jLabel_Endereco.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Endereco.setText("Endereço:");
    jLabel_Endereco.setBounds(new Rectangle(2, 294, 71, 15));
    jTextFieldEndereco.setAlignmentY((float) 0.5);
    jTextFieldEndereco.setBounds(new Rectangle(2, 309, 478, 22));
    jLabel_Complemento.setBounds(new Rectangle(2, 342, 109, 19));
    jLabel_Complemento.setText("Complemento:");
    jLabel_Complemento.setFont(new java.awt.Font("Dialog", 1, 11));
    jTextFieldComplemento.setBounds(new Rectangle(2, 359, 364, 22));
    jTextFieldComplemento.setAlignmentY((float) 0.5);
    jLabel_Bairro.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Bairro.setText("Bairro:");
    jLabel_Bairro.setBounds(new Rectangle(2, 391, 71, 19));
    jTextFieldBairro.setAlignmentY((float) 0.5);
    jTextFieldBairro.setBounds(new Rectangle(2, 408, 198, 22));
    jLabel_CEP.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_CEP.setText("C.E.P.:");
    jLabel_CEP.setBounds(new Rectangle(227, 391, 40, 15));
    jTextFieldCEP.setAlignmentY((float) 0.5);
    jTextFieldCEP.setBounds(new Rectangle(226, 408, 95, 22));
    jLabel_Cidade.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Cidade.setText("Cidade:");
    jLabel_Cidade.setBounds(new Rectangle(2, 440, 57, 15));
    jLabel_Estado.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Estado.setText("Estado:");
    jLabel_Estado.setBounds(new Rectangle(299, 440, 40, 15));
    jLabel_Observacao.setFont(new java.awt.Font("Dialog", 1, 11));
    jLabel_Observacao.setRequestFocusEnabled(true);
    jLabel_Observacao.setText("Observação:");
    jLabel_Observacao.setBounds(new Rectangle(2, 486, 84, 15));
    jTextFieldCidade.setAlignmentY((float) 0.5);
    jTextFieldCidade.setBounds(new Rectangle(2, 455, 273, 22));
    jTextFieldEstado.setBounds(new Rectangle(298, 456, 41, 22));
    jTextFieldEstado.setAlignmentY((float) 0.5);
    c.setEnabled(false);
    
    textAreaObservacao.setBounds(new Rectangle(3, 501, 470, 116));
    jButtonCadastrar.setBounds(new Rectangle(208, 636, 95, 29));
    jButtonCadastrar.setToolTipText("Cadastra o Cliente");
    jButtonCadastrar.setText("Cadastrar");
    c.add(jTextFieldCodigo, null);
    c.add(jLabel_Codigo, null);
    c.add(jTextFieldCliente, null);
    c.add(jLabel_Cliente, null);
    c.add(jLabel_Fantasia, null);
    c.add(jTextFieldFantasia, null);
    c.add(jLabel_CNPJ, null);
    c.add(jTextFieldCNPJ, null);
    c.add(jTextFieldInsc_Est, null);
    c.add(jLabel_Insc_Est, null);
    c.add(jLabel_Insc_Munic, null);
    c.add(jTextFieldInsc_Munic, null);
    c.add(jLabel7_Telefone1, null);
    c.add(jTextFieldTelefone1, null);
    c.add(jLabel_Telefone2, null);
    c.add(jTextFieldTelefone2, null);
    c.add(jTextFieldTelefone3, null);
    c.add(jLabel_Telefone3, null);
    c.add(jTextFieldFax, null);
    c.add(jLabel_Fax, null);
    c.add(jLabel_Caixa_Postal, null);
    c.add(jTextFieldCaixa_Postal, null);
    c.add(jLabel_Email, null);
    c.add(jTextFieldEmail, null);
    c.add(jLabel_Endereco, null);
    c.add(jTextFieldEndereco, null);
    c.add(jLabel_Complemento, null);
    c.add(jTextFieldComplemento, null);
    c.add(jLabel_Bairro, null);
    c.add(jTextFieldBairro, null);
    c.add(jLabel_CEP, null);
    c.add(jTextFieldCEP, null);
    c.add(jLabel_Cidade, null);
    c.add(jTextFieldCidade, null);
    c.add(jLabel_Estado, null);
    c.add(jTextFieldEstado, null);
    c.add(jLabel_Observacao, null);
    c.add(textAreaObservacao, null);
    c.add(jButtonCadastrar, null);

	 //setSize(275, 170);
	 setVisible(true);

	}

}
E esta é a classe DesktopTeste:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DesktopTeste extends JFrame{

	private JDesktopPane desktop;


public DesktopTeste()
{
	super ("Sistema");

	JMenu cadastro = new JMenu ("Cadastro");
	cadastro.setMnemonic('C');
	JMenuItem clientes = new JMenuItem("Clientes");
	cadastro.add(clientes);

	JMenuBar bar = new JMenuBar();
	setJMenuBar(bar);
	bar.add(cadastro);

	desktop = new JDesktopPane();
	getContentPane().add(desktop);

	 clientes.addActionListener(
	 	new ActionListener(){
			public void actionPerformed (ActionEvent e)
			{
				JInternalFrame frameInterno = new JInternalFrame (
				"Frame Interno", true, true, true, true);

				Container c = frameInterno.getContentPane();
				FrameCadastroClienteJuridica frameCadastro = new FrameCadastroClienteJuridica();
				c.add(frameCadastro, BorderLayout.CENTER);
				frameInterno.pack();
				desktop.add(frameInterno);
				frameInterno.setVisible(true);
				
				//frameCadastro.show();
			}
		}
	 );
	
			

	setSize(1000,1000);
	setVisible(true);

} // Menus()



public static void main (String[] args)
{
	  DesktopTeste app = new DesktopTeste();
	  app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

} // main()

}// class DesktopTeste

3 Respostas

J

Tudo bom!

Isto acontece porque a classe FrameCadastroClienteJuridica extende JFrame e por isso abre uma nova janela. Tente extender esta classe de JInternalFrame.

Abraços.

F

Olá flaviolopes,

Já que deseja abrir a classe ClienteJuridica como interno do Desktop, poderia estar usando-a como JInternalFrame…

Mude…

public class FrameCadastroClienteJuridica extends JFrame{

Por isto

public class FrameCadastroClienteJuridica extends JInternalFrame{

Faça uma modificação neste evento também, me parece estar meio incorreto.

clientes.addActionListener( 
     new ActionListener() {
          public void actionPerformed(ActionEvent e) { 
               JInternalFrame CadastroJuridica = new FrameCadastroClienteJuridica(); 

               try {
                    desktop.add(CadastroJuridica); 
                    CadastroJuridica.setVisible(true); 
                    CadastroJuridica.pack(); 
               }
               catch (java.beans.PropertyVetoException e2) {
                    System.err.println("Impossível carregar módulo de Cadastro de Pessoa Jurídica.");
               }
          } 
     } 
);

Como não cheguei a testar seu código e a sugestão que colocei, da uma testada e veja se funcionará. Qualquer coisa, da um alô.

Abraço,
Fábio Heleno

F

Olá FaHeCoN

Tentei fazer a alteração que vc sugeriu no evento, mas ao compilar
apareceu a seguinte mensagem de erro:

[b]Running: javac C:\Frame_Interno\DesktopTeste.java

C:\Frame_Interno\DesktopTeste.java:38: exception java.beans.PropertyVetoException is never thrown in body of corresponding try statement
catch (java.beans.PropertyVetoException e2) {[/b]

O que significa isso?

Bom…antes de fazer a alteração acima, eu fiz como vcs sugeriram e
extendi para a classe para extends JInternalFrame{

Aí funcionou, só que quando abre o Frame Interno (que é FrameCadastroClienteJuridica) esta tela não abre com as dimensões que era para abrir, ou seja, com as dimensões que abriam antes!

A pergunta é: Como faço para abrir este Frame Interno com as dimensões pré-definidas na classe FrameCadastroClienteJuridica ?

A outra pergunta é que ao abrir, parte da tela ficará “escondida”. Como faço para colocar barras de rolagem (ou outra solução) em um Frame ??

Sei lá se fui claro…

Criado 12 de novembro de 2004
Ultima resposta 12 de nov. de 2004
Respostas 3
Participantes 3