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
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…
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”.
Vou dar um exemplo bem boboca, para você ter uma ideia do que eu estou falando.
[code]private void jbtnCadastroClienteMouseClicked(java.awt.event.MouseEvent evt) {
if (evt.getClickCount()==2)
{
}
}
[/code]
esse é o evento do mouse clicked
ai a classe do Jframe chama CadastroCliente
agora como q coloco ai no meio?
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
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.

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();
}
Eu não fiz com o clique duplo, que é mais difícil. Vou tentar fazer com o tal do clique duplo.
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:
