Clique do Menu nào funciona! JMenuBar

1 resposta
J
Estou usando JMenuBar e quando executa nào aciona o evento de açao!

Alguem pode me ajudar!

segue fonte abaixo para Desk.java

import javax.swing.<em>;

import javax.swing.JMenuItem.</em>;

import java.awt.event.<em>;

import java.awt.event.ActionEvent.</em>;

import java.awt.event.ActionListener.*;

import java.awt.*;
//import java.awt.event.ActionEvent;

public class Desk extends JFrame implements ActionListener {

public JMenuItem CadOper,CadPrest;

public JMenu fileCad;
public Desk(){
	super();
	Container framePane = this.getContentPane();
///Criando Frames internos		

JInternalFrame if1= new JInternalFrame(Um,true,true,true);

//	JInternalFrame if2= new JInternalFrame(“Dois”,true,true,true);

if1.getContentPane().add(new JEditorPane());

//	if2.getContentPane().add(new JEditorPane());

if1.setBounds(30,30,250,200);

//	if2.setBounds(30,30,250,200);

if1.setVisible(true);

//	if2.setVisible(true);

///Termino de frames internos
///Criacao do Menu Bar
JMenuBar jmb = new JMenuBar();

JMenu fileCad = new JMenu("Cadastros");
	fileCad.addActionListener(this);
	JMenuItem CadOper = new JMenuItem("Operadoras");
	CadOper.addActionListener(this);
	CadOper.setMnemonic(KeyEvent.VK_N);
		JMenuItem CadPrest = new JMenuItem("Prestadores");
	CadPrest.addActionListener(this);
		JMenuItem CadProcess = new JMenuItem("Processos");
//	CadProcess.addActionListener(this);	
	fileCad.add(CadOper);	
	fileCad.add(CadPrest);	
	fileCad.add(CadProcess);

	JMenu fileDigit = new JMenu("Digitacao");
	JMenuItem DigitConsulta = new JMenuItem("Consultas");
//	CadOper.addActionListener(this);
		JMenuItem DigitSadt = new JMenuItem("SADT");
//	CadPrest.addActionListener(this);
	fileDigit.add(DigitConsulta);	
	fileDigit.add(DigitSadt);

// jmb.addActionListener( this );

jmb.add(fileCad);
	jmb.add(fileDigit);
	setJMenuBar(jmb);

////Termino do Menu bar

///Criando Frame Principal	

JDesktopPane dtp = new JDesktopPane();

dtp.add(if1);	

<a href="//dtp.add">//dtp.add</a>(if2);

dtp.add(jmb);
framePane.add(BorderLayout.CENTER, dtp);
	this.setTitle("Digitacao Consulta - TISS v1.0 ");
	//this.getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
	this.getRootPane().setBorder(BorderFactory.createLineBorder(Color.cyan,4));
	this.getContentPane().setBackground(Color.lightGray);
	//this.setDefaultCloseOperation(EXIT_ON_CLOSE);
	//this.getContentPane().setLayout(null);
	this.setSize(800,600);
	this.setVisible(true);

///Fechando Frame

getContentPane().add(dtp);
}
 public void actionPerformed(ActionEvent e) {
 	if (e.getSource()==CadOper)
	{
		JOptionPane.showMessageDialog(null,"voce clicou Cadastrar!","message",0);
	}
  if (e.getSource()==CadPrest)
	{
		JOptionPane.showMessageDialog(null,"voce clicou Cadastrar!","message",0);
	}
}        

public static void main(String arg[])
{
	new Desk().show();
}

}
//Desde ja agradeco a atencao!

1 Resposta

B

Ola,

Parece que não está funcionando pq vc não trata o JMenu, somente os JMenuItem’s, o seu JMenu está como variável local, e não se encontra nas condições do actionPerformed: public void actionPerformed&#40;ActionEvent e&#41; &#123; if &#40;e.getSource&#40;&#41;==CadOper&#41;&#123; JOptionPane.showMessageDialog&#40;null,&quot;voce clicou Cadastrar!&quot;,&quot;message&quot;,0&#41;; &#125; if &#40;e.getSource&#40;&#41;==CadPrest&#41;&#123; JOptionPane.showMessageDialog&#40;null,&quot;voce clicou Cadastrar!&quot;,&quot;message&quot;,0&#41;; &#125; &#125;

O que acho eu que é o correto, somente os JMenuItem’s terem tratamento… o JMenu é só um agrupador.

Criado 8 de maio de 2007
Ultima resposta 8 de mai. de 2007
Respostas 1
Participantes 2