Eu quero fazer com que ao usuário clicar em um ítem do menu, seja colocado o início de um formulário na tela. Mas eu clico no ítem do menu e nada acontece. O que está errado?
O código é este …
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
public class Frame extends JFrame
{
private JTextField texto1;
private JLabel label1;
private JLabel label;
public Frame()
{
super("Cadastro de usuário");
Object label;
setLayout( new FlowLayout() );
JMenuBar barra = new JMenuBar();
setJMenuBar(barra);
JMenu opcao1 = new JMenu("Arquivo");
JMenu novo = new JMenu("Novo Cadastro");
JMenu editar = new JMenu("Editar Cadastro Corrente");
barra.add(opcao1);
opcao1.add(novo);
opcao1.add(editar);
Acao acao = new Acao();
novo.addActionListener(acao);
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
label1 = new JLabel("Nome");
add(label1);
texto1 = new JTextField(10);
add(texto1);
}
};
}
}
Pelo que eu vi o seu codigo ta um pouco estranho, por exemplo, vc esta definindo :
JMenuBar barra = new JMenuBar();
setJMenuBar(barra);
JMenu opcao1 = new JMenu ("Arquivo");
JMenu novo = new JMenu("Novo Cadastro");
JMenu editar = new JMenu("Editar Cadastro Corrente");
e adicionou o novo e editar no opcao1, ate ai tudo bem mas vc nao adicionou nenhum JMenuItem pra eles. Eu modifiquei o essa parte pra :
JMenuBar barra = new JMenuBar();
setJMenuBar(barra);
JMenu opcao1 = new JMenu ("Arquivo");
JMenuItem novo = new JMenuItem("Novo Cadastro");
JMenuItem editar = new JMenuItem("Editar Cadastro Corrente");
Depois pelo que eu entendi vc queria clicar no menu e abrir um outro formulario nao eh? Eu acho melhor vc criar os outros JFrames em arquivos separados, por exemplo :
novo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new FormNovoCadastro();
}
});
editar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
new FormEditarCadastro();
}
});
Aqui eu adicionei um listener pra cada JMenuItem do seu JMenu, e cada um deles chama uma classe que define um JFrame.
Bom, ai vai o seu codigo inteiro modificado :
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class teste extends JFrame {
private JLabel label1;
public teste()
{
super("Cadastro de usuário");
setLayout( new FlowLayout() );
JMenuBar barra = new JMenuBar();
setJMenuBar(barra);
JMenu opcao1 = new JMenu ("Arquivo");
JMenuItem novo = new JMenuItem("Novo Cadastro");
JMenuItem editar = new JMenuItem("Editar Cadastro Corrente");
barra.add(opcao1);
opcao1.add(novo);
opcao1.add(editar);
label1 = new JLabel();
novo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label1.setText("Novo Cadastro");
// new FormNovoCadastro();
}
});
editar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
label1.setText("Editar Cadastro");
// new FormEditarCadastro();
}
});
add(label1);
pack();
setVisible(true);
}
public static void main(String[] args) {
new teste();
}
}
Eu coloquei um Label e estou alterando o text deles nos listeners so pra vc ver as acoes acontencendo, mas eu coloquei a chamada pros outros JFrames comentados tb pra vc ver onde coloca-los.