Como um Jframe abre outro Jframe

9 respostas
F

Boa tarde, estou fazendo um trabalho

em q tenho q criar um JFrame chamado menu, que os botões contidos neles, apos ser clicado 2x ele abre outro Jframe

Por exemplo,

Botão Cadastro Cliente apos clicado 2 vez abre o Jframe CadastroCliente.

Grato

Felipe Donizetti

9 Respostas

nebster

faça a leitura dos clicks, depois de feita a leitura coloque uma função para invocar um método e abrir o outro JFrame…
pronto…

E

O correto é ter apenas um JFrame na sua aplicação, e os componentes que ele for abrir devam ser JDialogs (não JFrames), senão você terá problemas de “modalidade”.

E

Vou dar um exemplo bem boboca, para você ter uma ideia do que eu estou falando.

F
private void jbtnCadastroClienteMouseClicked(java.awt.event.MouseEvent evt) {                                                 
        if (evt.getClickCount()==2)   
        {
            
        }
            
    }

esse é o evento do mouse clicked

ai a classe do Jframe chama CadastroCliente

agora como q coloco ai no meio?

nebster

private void jbtnCadastroClienteMouseClicked(java.awt.event.MouseEvent evt) { if (evt.getClickCount()==2) { CadClientes.abrir() //abrir é o metodo que invoca o outro JFrame Clientes.fechar() //fechar é o metodo que esconde o primeiro JFrame } }

com esse codigo vc só precisa definir seus metodos.

qualquer duvida continue nesse post

F

ai q tá x da questão, eu não sei como fazer os métodos, no caso ai o abrir e fechar, para q eles realmente funcione.

:frowning:

E
package guj;

import java.awt.BorderLayout;

public class MenuFrame extends JFrame {

    private JPanel contentPane;
    private JPanel panel;
    private JButton btnCadastroClientes;
    private JButton btnCadastroProdutos;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MenuFrame frame = new MenuFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MenuFrame() {
        setTitle("Menu");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        contentPane.add(getPanel(), BorderLayout.SOUTH);
    }

    private JPanel getPanel() {
        if (panel == null) {
            panel = new JPanel();
            panel.add(getBtnCadastroClientes());
            panel.add(getBtnCadastroProdutos());
        }
        return panel;
    }

    private JButton getBtnCadastroClientes() {
        if (btnCadastroClientes == null) {
            btnCadastroClientes = new JButton("Clientes");
            btnCadastroClientes.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    CadastroClientesDialog ccd = new CadastroClientesDialog(MenuFrame.this);
                    ccd.setModalityType(ModalityType.APPLICATION_MODAL);
                    ccd.setVisible(true);
                }
            });
        }
        return btnCadastroClientes;
    }

    private JButton getBtnCadastroProdutos() {
        if (btnCadastroProdutos == null) {
            btnCadastroProdutos = new JButton("Produtos");
            btnCadastroProdutos.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    CadastroProdutosDialog cpd = new CadastroProdutosDialog(MenuFrame.this);
                    cpd.setModalityType(ModalityType.APPLICATION_MODAL);
                    cpd.setVisible(true);
                }
            });
        }
        return btnCadastroProdutos;
    }
}
package guj;

import java.awt.BorderLayout;

public class CadastroClientesDialog extends JDialog {

    /**
     * Create the dialog.
     */
    public CadastroClientesDialog() {
        super();
        init();
    }

    public CadastroClientesDialog(Window owner) {
        super(owner);
        init();
    }

    public void init() {
        setTitle("Cadastro de Clientes");
        setBounds(100, 100, 450, 300);
        getContentPane().setLayout(new BorderLayout());
        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
        getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(new BorderLayout(0, 0));
        {
            JPanel panel = new JPanel();
            panel.setBorder(new TitledBorder(null, "Cadastro de Clientes", TitledBorder.LEADING, TitledBorder.TOP, null, null));
            contentPanel.add(panel);
        }
    }

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        try {
            CadastroClientesDialog dialog = new CadastroClientesDialog();
            dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
            dialog.setVisible(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private final JPanel contentPanel = new JPanel();

}
package guj;

import java.awt.BorderLayout;

public class CadastroProdutosDialog extends JDialog {

    /**
     * Create the dialog.
     */
    public CadastroProdutosDialog() {
        super();
        init();
    }

    public CadastroProdutosDialog(Window owner) {
        super(owner);
        init();
    }

    public void init() {
        setTitle("Cadastro de Produtos");
        setBounds(100, 100, 450, 315);
        getContentPane().setLayout(new BorderLayout());
        contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
        getContentPane().add(contentPanel, BorderLayout.CENTER);
        contentPanel.setLayout(new BorderLayout(0, 0));
        {
            JPanel panel = new JPanel();
            panel.setBorder(new TitledBorder(null, "Cadastro de Produtos", TitledBorder.LEADING, TitledBorder.TOP, null, null));
            contentPanel.add(panel);
        }
    }

    private final JPanel contentPanel = new JPanel();

}
E

Eu não fiz com o clique duplo, que é mais difícil. Vou tentar fazer com o tal do clique duplo.

E
package guj;

import java.awt.BorderLayout;

public class MenuFrame extends JFrame {

    private JPanel contentPane;
    private JPanel panel;
    private JButton btnCadastroClientes;
    private JButton btnCadastroProdutos;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    MenuFrame frame = new MenuFrame();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public MenuFrame() {
        setTitle("Menu");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        contentPane.setLayout(new BorderLayout(0, 0));
        setContentPane(contentPane);
        contentPane.add(getPanel(), BorderLayout.WEST);
    }

    private JPanel getPanel() {
        if (panel == null) {
            panel = new JPanel();
            panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS));
            panel.add(getBtnCadastroClientes());
            panel.add(getBtnCadastroProdutos());
        }
        return panel;
    }

    private JButton getBtnCadastroClientes() {
        if (btnCadastroClientes == null) {
            btnCadastroClientes = new JButton("<html><u>Clientes</u></html>");
            btnCadastroClientes.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    if (e.getClickCount() == 2) {
                        CadastroClientesDialog ccd = new CadastroClientesDialog(MenuFrame.this);
                        ccd.setModalityType(ModalityType.APPLICATION_MODAL);
                        ccd.setVisible(true);
                    }
                }
            });
            btnCadastroClientes.setContentAreaFilled(false);
            btnCadastroClientes.setBorder(null);
            btnCadastroClientes.setBorderPainted(false);
        }
        return btnCadastroClientes;
    }

    private JButton getBtnCadastroProdutos() {
        if (btnCadastroProdutos == null) {
            btnCadastroProdutos = new JButton("<html><u>Produtos</u></html>");
            btnCadastroProdutos.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    if (e.getClickCount() == 2) {
                        CadastroProdutosDialog cpd = new CadastroProdutosDialog(MenuFrame.this);
                        cpd.setModalityType(ModalityType.APPLICATION_MODAL);
                        cpd.setVisible(true);
                    }
                }
            });
            btnCadastroProdutos.setBorderPainted(false);
            btnCadastroProdutos.setContentAreaFilled(false);
            btnCadastroProdutos.setBorder(null);
        }
        return btnCadastroProdutos;
    }
}

A tela do menu está bem feinha, mas seria:

Criado 5 de março de 2012
Ultima resposta 5 de mar. de 2012
Respostas 9
Participantes 3