Abrir nova "tela" no mesmo JPanel

Amigos, mais uma vez recorro a sapiência dos Senhores…

o problema agora é o seguinte…

tenho o segunte código

package SisGen;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import SisGen.Cliente;

public class SisGEn extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	JPanel botoes = new JPanel();	
	JPanel desktop = new JPanel();
	JLabel acesso = new JLabel("Acesso Rápido");
	JButton botaoNovoCliente = new JButton ("Cadastar Cliente");
	JButton botaoPesquisarCliente = new JButton ("Pesquisar Cliente");
	JButton botaoExcluirCliente = new JButton ("Excluir Cliente");
	JButton botaoNovaEncomenda = new JButton ("Nova Encomenda");
	JButton botaoSair = new JButton ("Sair");
	JMenuBar barra = new JMenuBar();
	JMenu menuCliente = new JMenu("Cliente");
	JMenu menuEnvio = new JMenu("Envio");
	JMenu menuBoleto = new JMenu("Boleto");
	JMenu menuEncomenda = new JMenu("Encomenda");
	JMenu menuSair = new JMenu("sair");
	JMenu menuAjuda = new JMenu("Ajuda");
	JMenuItem novoCliente = new JMenuItem("Novo");
	JMenuItem pesquisarCliente = new JMenuItem("Pesquisar");
	JMenuItem excluirCliente = new JMenuItem("Excluir");
	JMenuItem novoEnvio = new JMenuItem("Novo");
	JMenuItem pesquisarEnvio = new JMenuItem("Pesquisar");
	JMenuItem novoBoleto = new JMenuItem("Novo");
	JMenuItem pesquisarBoleto = new JMenuItem("Pesquisar");
	JMenuItem cancelarBoleto = new JMenuItem("Cancelar");
	JMenuItem novaEncomenda = new JMenuItem("Nova");
	JMenuItem pesquisarEncomenda =  new JMenuItem("Pesquisar");
	JMenuItem sobre = new JMenuItem("Sobre");
	JMenuItem sair = new JMenuItem("Sair");
		
	public SisGEn ()	
	{
		super ("Sistema gerenciador de Encomendas");
		JPanel principal = new JPanel();//tela principal
		principal.setLayout(null);
		setSize(1000,700);
				
		botoes.setSize(150,700);
		botoes.setLayout(null);
		botoes.setBackground(new Color (253,253,253));
		botoes.setBounds(0,0,150,700);
				
		desktop.setLayout(null);
		desktop.setSize(750, 700);
		desktop.setBackground(new Color (0,0,0));
		desktop.setBounds(150,0,840,700);
				
		acesso.setBounds (30,25,150,20);
		botaoNovoCliente.setBounds (2,50,145,20);
		botaoPesquisarCliente.setBounds (2,75,145,20);
		botaoExcluirCliente.setBounds (2,100,145,20);
		botaoNovaEncomenda.setBounds (2,125,145,20);
		botaoSair.setBounds (2,150,145,20);
		barra.setBounds(0,0,1000,20);
		
		add(principal);
		
		principal.add(barra);
		
		barra.add(menuCliente);
			menuCliente.add(novoCliente);
			menuCliente.add(pesquisarCliente);
			menuCliente.add(excluirCliente);
				
		barra.add(menuEnvio);
			menuEnvio.add(novoEnvio);
			menuEnvio.add(pesquisarEnvio);
						
		barra.add(menuBoleto);
			menuBoleto.add(novoBoleto);
			menuBoleto.add(pesquisarBoleto);
			menuBoleto.add(cancelarBoleto);
							
		barra.add(menuEncomenda);
			menuEncomenda.add(novaEncomenda);
			menuEncomenda.add(pesquisarEncomenda);
				
		barra.add(menuSair);
			menuSair.add(sair);
			sair.addActionListener(this);

		barra.add(menuAjuda);
			menuAjuda.add(sobre);
		
		principal.add(botoes);
			botoes.add(acesso);
			botoes.add(botaoNovoCliente);
			botaoNovoCliente.addActionListener(this);
			botoes.add(botaoPesquisarCliente);
			botoes.add(botaoExcluirCliente);
			botoes.add(botaoNovaEncomenda);
			botoes.add(botaoSair);
			botaoSair.addActionListener(this);
		
		principal.add(desktop);
						
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setResizable(false);
	}

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


	@Override
	public void actionPerformed(ActionEvent click) 
	{
		Object acao = click.getSource();
		
		if (acao == botaoSair || acao == sair)
		{
			System.exit(0);
		}
		if (acao == botaoNovoCliente)
		{
			/// minha dúvida esta aqui
		}
		
	}

}

Gostria de contar com a ajuda dos Senhores as uma vez e pedir que me expiquem como faço para abrir a tela da minha calsse Cliente (que esta so com a tela configurada para testes) detro do JPanel que chamei de desktop

package SisGen;

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

public class Cliente extends JFrame implements ActionListener 
{
	private static final long serialVersionUID = 1L;
	public Cliente()
	{
		super ("Cliente");
		setSize (750,800);
		setVisible(true);
		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		
	}
	

}

Boa noite a todos…
será que isso é possivel? se sim algue pode me orntar a faze-lo?

Crie uma instancia da classe Cliente e adicione ao JPanel nomeado desktop :


    @Override   
    public void actionPerformed(ActionEvent click)   
    {   
        Object acao = click.getSource();   
           
        if (acao == botaoSair || acao == sair)   
        {   
            System.exit(0);   
        }   
        if (acao == botaoNovoCliente)   
        {   
            
            Cliente cliente = new Cliente();
            desktop.add(cliente);  
        }   
           
    }   
  
}   

e use JInternalFrame na sua Classe Cliente , assim :

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JInternalFrame;
  
public class Cliente extends JInternalFrame implements ActionListener   
{   
    private static final long serialVersionUID = 1L;   
    public Cliente()   
    {   
        super ("Cliente");   
        setSize (750,800);   
        setVisible(true);   
           
    }   
  
    @Override   
    public void actionPerformed(ActionEvent e) {   
        // TODO Auto-generated method stub   
           
    }   
       
  
}   

Enjoy :wink:

assim funcionou soque não to conseguindo colocar nada na tela

public Cliente()
	{
		super ("Cliente");
		setSize (840,655);
		JFrame tela1 = new JFrame();
		tela1.setLayout(null);
		tela1.setBackground(new Color (54, 67, 99));
    	                botaoLimpar.addActionListener(this);		
		botaoLimpar.setBounds(407, 450, 180, 50);
                 	tela1.add(botaoLimpar);

    	                setVisible(true);
		
	}

mas, não aparece nada

Ola,

Voce nao pode adicionar um JFrame dentro de um JInternalFrame, sua classe Cliente deve ficar assim :

package SisGen;

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.GroupLayout;
import javax.swing.JInternalFrame;

public class Cliente extends JInternalFrame {

	private static final long serialVersionUID = 1L;
              
	private javax.swing.JButton jButton1;

	public Cliente() {

		super("Cliente");
		setSize(840, 655);

		inicializar();
	}
              
	private void inicializar() {
		jButton1 = new javax.swing.JButton();

		this.setLayout(null);
		this.setBackground(java.awt.Color.lightGray);

		setTitle("Cadastro de Funcionarios");

		jButton1.setBounds(407, 450, 180, 50);
		jButton1.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent evt) {
				jButton1ActionPerformed(evt);
			}
		});

        jButton1.setText("Sair");
        jButton1.setName("jButton1");

        
        //define o layout e adiciona os componentes a ele.
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(142, 142, 142)
                .addComponent(jButton1)
                .addContainerGap(186, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(113, 113, 113)
                .addComponent(jButton1)
                .addContainerGap(136, Short.MAX_VALUE))
        );

        pack();
		setVisible(true);
	}

	private void jButton1ActionPerformed(ActionEvent e) {
		// colque aqui a acao do seu botao
		System.exit(0);
	}
}

Aconselho como uma boa forma de aprender bem a usar Interfaces Graficas, o uso do NetBeans porque atraves dele voce pode ir criando primeiramente seu projeto de forma visual, ou seja arrastando os componentes para o formulario, e ir analisando o codigo para entender como a estrutra funciona.

Qualquer coisa eh so postar, :slight_smile:

flw.

Daniel, poderia me informar tbm se existe a possíbilidade de fazer o seguinte:

  • quando o usuário clicar em um botão que esteja no menu do programa ex: “Localizar”.
  • aparecer no próprio frame principal um campo de pesquisa e um botão localizar? ou para que isso aconteça eu terei que chamar uma outra janela (frame)? espero que tenha ficado claro a minha dúvida.

Att,
Welington

[quote=welingtondias]Daniel, poderia me informar tbm se existe a possíbilidade de fazer o seguinte:

  • quando o usuário clicar em um botão que esteja no menu do programa ex: “Localizar”.
  • aparecer no próprio frame principal um campo de pesquisa e um botão localizar? ou para que isso aconteça eu terei que chamar uma outra janela (frame)? espero que tenha ficado claro a minha dúvida.

Att,
Welington
[/quote]

Isso eu fiz e deu certo, criando uma ação para o botão mais ou menos assim


if ( objeto de ação == boatão localizar)
{
         JFrame.add(Jframe com os campos que vc quer);
}

vc cria outro JFrame e configura todos os componentes dele depois vc diz ao programa quer qdo o botão X for acionado que adicione este Frame.

Olá Welington

Sim, é possível fazer isso, e é muito simples, pense o seguinte :

No seu frame principal voce tem um menu com o botao “localizar” , e tambem voce deve ter um JPanel em seu frame principal, esse é responsável por armazenar todos os componentes da tela (funciona como um container).

Voce pode então criar os componentes e adiciona-los nesse JPanel, e deixa-los como botao.setVisible(false).
Depois que o usuário clicar no menu, voce apenas muda a visibilidade dos mesmos assim botao.setVisible(true),

dessa forma eles aparecerão direto no frame principal, (com o uso do JPanel) e não em outro frame.

Espero ter ajudado.
Qualquer coisa é só postar,
flw.

Caros amigos seguindo as orientações do Daneila consegui fazer o que eu queria…
Mas, apareceu outro problema, ja tentei tudo que estava ao meu alcance ( e conheceimento)
Seguinte a minha tela ta assim:

vom faço para alinha os JLbael e os botões?

Caros amigos seguindo as orientações do Daneila consegui fazer o que eu queria…
Mas, apareceu outro problema, ja tentei tudo que estava ao meu alcance ( e conheceimento)
Seguinte a minha tela ta paraecendo uma ecadinh,rsrsrsrrs

eis ocódigo

package SisGenEnc;

import java.awt.event.ActionEvent;

import javax.swing.JButton;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
  
public class Cliente extends JInternalFrame
{
	private static final long serialVersionUID = 1L;   
	
	JButton novo = new JButton("Novo");   
	JButton salvar = new JButton("Salvar");   
	JButton cancelar = new JButton("Cancelar");   
	JButton sair = new JButton("Sair");
	
	JLabel codigo = new JLabel("Código: ");
	JLabel nome = new JLabel("Nome: ");
	JLabel rg = new JLabel("RG: ");
	JLabel cpf = new JLabel("CPF: ");
	JLabel endereco = new JLabel("Endereço: ");
	JLabel numero = new JLabel("Número: ");
	JLabel bairro = new JLabel("Bairro: ");
	JLabel cidade = new JLabel("Cidade: ");
	JLabel estado = new JLabel("Estado: ");
	JLabel cep = new JLabel("CEP: ");

    public Cliente() 
    {
    	super("Cliente");   
        inicializar();   
    }   
                 
    private void inicializar() 
    {
    	
        this.setLayout(null);   
        this.setBackground(java.awt.Color.LIGHT_GRAY);   
        
        setTitle("Clientes");   
        sair.setBounds(20, 20, 280, 350);   
        sair.addActionListener(new java.awt.event.ActionListener() 
        {   
            public void actionPerformed(java.awt.event.ActionEvent evt) 
            {   
                sairActionPerformed(evt);   
            }   
        });   
  
                 
        //define o layout e adiciona os componentes a ele.   
        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());   
        getContentPane().setLayout(layout);   
        
        layout.setHorizontalGroup(   
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)   
            .addGroup(layout.createSequentialGroup()   
            	//.addGap(0, 0, 0)   
                .addComponent(codigo)   
                .addGap(0, 0, 0)   
                .addComponent(nome)  
                .addGap(0, 0, 0)   
                .addComponent(rg)   
                .addGap(0, 0, 0)   
                .addComponent(cpf)   
                .addGap(0, 0, 0)   
                .addComponent(endereco)   
                .addGap(0, 0, 0)   
                .addComponent(numero)   
                .addGap(0, 0, 0)   
                .addComponent(bairro)   
                .addGap(0, 0, 0)   
                .addComponent(cidade)   
                .addGap(0, 0, 0)   
                .addComponent(estado)   
                .addGap(0, 0, 0)   
                .addComponent(cep)   
                .addGap(0, 0, 0)   
                .addComponent(novo)   
                .addGap(0, 0, 0)   
                .addComponent(salvar)   
                .addGap(0, 0, 0)   
                .addComponent(cancelar)   
                .addGap(0, 0, 0)   
                .addComponent(sair)   
                
                .addContainerGap(100, Short.MAX_VALUE)) 
                
        );   
        layout.setVerticalGroup(   
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)   
            .addGroup(layout.createSequentialGroup()   
            		//.addGap(0, 0, 0)
                    .addComponent(codigo)   
                    .addGap(0, 0, 0)
                    .addComponent(nome)  
                   .addGap(0, 0, 0)
                    .addComponent(rg)   
                    .addGap(0, 0, 0)
                    .addComponent(cpf)   
                    .addGap(0, 0, 0)
                    .addComponent(endereco)   
                    .addGap(0, 0, 0)
                    .addComponent(numero)   
                    .addGap(0, 0, 0)
                    .addComponent(bairro)   
                    .addGap(0, 0, 0)
                    .addComponent(cidade)   
                    .addGap(0, 0, 0)
                    .addComponent(estado)   
                    .addGap(0, 0, 0)
                    .addComponent(cep)   
                    .addGap(0, 0, 0)
                    .addComponent(novo)   
                    .addGap(0, 0, 0)
                    .addComponent(salvar)   
                    .addGap(0, 0, 0)
                    .addComponent(cancelar)   
                    .addGap(0, 0, 0)
                    .addComponent(sair)   
                                  
                .addContainerGap(100, Short.MAX_VALUE))   
        );   
  
        pack();   
        setVisible(true);   
    }   
  
    private void sairActionPerformed(ActionEvent e) {   
        // colque aqui a acao do seu botao   
        System.exit(0);   
    }   
}  

conto co a ajudados senhores mais uma rez…

Ola cleyvison,

Repito que aconselho voce a instalar o NetBeans criar um projeto com interface ao usuario visualmente, para que assim voce possa entender
como funciona trabalhar com Awt/Swing e saber como fazer de tudo, como por exemplo alinhar esses componentes que voce quer.

Se voce quer alinhar um por um na mao, te desejo boa sorte, mas voce vai perder muuuito tempo, como o pessoal diz
“reinventando a roda” , faca isso que eu te disse e voce aprendera tudo que precisa relacionado as interfaces graficas.

obs : Daneila nao por favor hein rsrsrs :slight_smile:

Qualquer coisa eh so postar ai.
flw.

Valu… vou vencer a imed^ncia contra o NetBeans… um abraço

Daniel muito obrigado pela dica e realmente é muito simples de implementar.

Porém estou com dúvida em outra coisa:

  • Como faço para deixar o combobox com a informação selecionada na tela qdo o usuário clicar para escolher uma opção? Deixa eu esplicar melhor qdo eu clico em procurar (Menu) aparece um combobox (em Branco) o mesmo só é preenchido qdo selecionado uma opção via Radiobuton, após selecionado a opção o combobox é preenchido, porém desaparece logo após clicado em um item de dentro dele e outra coisa qdo clico em outra opção (RadioButon) tbm preenche o combobox só que os itens da opção anterior não somem e ele fica com tudo encavalado poderia me informar tbm se o conteúdo selecionado vai para o BD do mesmo jeito que um campo textfield?

:smiley: