Boa noite pessoal. É o seguinte … eu quero que quando o usuário clicar em uma opção do menu, apareça um determinado conteúdo na tela.
Estou fazendo assim …
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);
if(novo.isSelected())
{
label1 = new JLabel("Nome");
add(label1);
texto1 = new JTextField(10);
add(texto1);
}
else
{
label = new JLabel("Arquivo novo não-selecionado!");
}
}
}
Como podem perceber estou tentando fazer isso através de if(novo.isSelected()), mas não funciona. Não acontece nada quando clico na opção Novo Cadastro. Como devo fazer?
se voce está querendo que quando alguem clicar no item de menu…abra uma nova janela para um cadastro ou consulta,. voce deve adicionar um actionListener a esse item de menu, semelhante ao JButton.
[code]
novo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
//faz alguma coisa;;
}
});[/code]
Carlos eu mudei o código e deixei desta forma …
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);
if(novo.isSelected())
{
novo.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
label1 = new JLabel("Nome");
add(label1);
texto1 = new JTextField(10);
add(texto1);
}
});
}
}
}
… mas continua não acontecendo nada. :sad:
Em voce nao precisa do if que tem o isSelected, o metodo do actionListener é disparado toda a vez que voce clicar no item do menu.
Então vc me aconselha tirar o if? Ficaria assim …
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);
novo.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
label1 = new JLabel("Nome");
add(label1);
texto1 = new JTextField(10);
add(texto1);
}
});
}
}
… é, eu fiz isso e continua não acontecendo nada ao clicar no ítem do menu.
Ola,
Sou novo na programação com Java e Swing, porém fiz uma pequena modificação no seu código e funcionou perfeitamente.
Você precisa chamar o método pack() de JFrame para ele recalcular o espaço ocupado pelo frame.
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”);
JMenuItem novo = new JMenuItem(“Novo Cadastro”);
JMenu editar = new JMenu(“Editar Cadastro Corrente”);
barra.add(opcao1);
opcao1.add(novo);
opcao1.add(editar);
novo.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
label1 = new JLabel(“Nome”);
add(label1);
texto1 = new JTextField(10);
add(texto1);
pack();
}
});
}
}
Abraços,
Carlos