Problemas em desabilitar opção do menu depois reabilitar! (RESPONDIDA)

5 respostas
ponte

Olá pessoal alguém pode me dar uma ajudinha!!
Sabe é que eu to com um probleminha eu quero desabilitar uma opção do menu quando o usuário clicar e abrir uma janela para q ele não abra a janela quantas vezes quiser, ai eu quero assim q ele fechar a janela habilitar novamente o menu caso ele queira entrar na mesma janela.
Segue código:

Class do menu.

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;



public class JPrincipal extends JFrame {
	
	
	public void criarJanela(){
		
		
		//Titulo da janela
		this.setTitle("TITANIUS");
		this.getContentPane().setLayout(null);
	
		
		//Janela Maximizada
		this.setExtendedState(MAXIMIZED_BOTH);
		
		//Fechar a aplicação quando clicar no "x", parar vm
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		//Cria objeto de JPanel
		JPanel painel = new JPanel();
		
		//Redimensiona o objeto
		painel.setSize(1268,768);
		
		//Seleciona uma cor de fundo para o objeto e a coloca
		//Adiciona painel a janela
		painel.setBackground(Color.black);
		this.add(painel);
		
		//Cria objeto da barra de menu
		JMenuBar menubar = new JMenuBar();
		
		//Cria objeto menu e seus objetos itens abaixo de cada um
		JMenu mnucadastro = new JMenu("Cadastro");
		final JMenuItem cadusuarios = new JMenuItem("Usuários");
		final JMenuItem cadclientes = new JMenuItem("Clientes");
		JMenuItem cadfornece = new JMenuItem("Fornecedores");
		JMenuItem sair = new JMenuItem("Sair");
			mnucadastro.add(cadusuarios);
			mnucadastro.add(cadclientes);
			mnucadastro.add(cadfornece);
			mnucadastro.add(sair);
				menubar.add(mnucadastro);	
	             cadusuarios.addActionListener(new ActionListener(){
	            	 public void actionPerformed(ActionEvent e){
	            		  new CadUsu();
	            		    cadusuarios.setEnabled(false);
	            		 
	            	 }
	             }
	             );
	             cadclientes.addActionListener(new ActionListener(){
	            	 public void actionPerformed(ActionEvent e){
	            		 new CadUsu();
	            			
	            	 }
	             }
	             );
					//cadusuarios.addActionListener(new ClicadoCadUsu());
					sair.addActionListener(new ClicadoSair());
				
					
		JMenu mnurelatorio = new JMenu("Relatório");
	    	
	    	JMenuItem relusuarios = new JMenuItem("Usuários");
	    	JMenuItem relclientes = new JMenuItem("Clientes");
	    	JMenuItem relfornece = new JMenuItem("Fornecedores");
	    		mnurelatorio.add(relusuarios);
	    		mnurelatorio.add(relclientes);
	    		mnurelatorio.add(relfornece);
	    			menubar.add(mnurelatorio);		
		 
	    //usa o menu criado			
		this.setJMenuBar(menubar);
		
		//Visibilidade da janela
		
		
		this.setVisible(true);
		
	}
	
public static void main(String[] args) {
	     JPrincipal janela = new JPrincipal();
	     janela.criarJanela();
	}


	

}

Classe da janela aberta:

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;


public class CadUsu extends JPrincipal {
	JPrincipal janela = new JPrincipal();
	JLabel lblnome = new JLabel("Nome do Usuario:::>");
	JLabel lblend = new JLabel("<:::Endereço do Usuario");
	JLabel lblcpf = new JLabel("CPF:::>");
	JLabel lbldpessoais = new JLabel("|DADOS PESSOAIS|:");
	JLabel lbldlogin = new JLabel("|DADOS DE LOGIN|");
	JLabel lblnlogin = new JLabel("Login:::>");
	JLabel lblsen = new JLabel("<:::Senha");
	JLabel lbltip = new JLabel("|TIPO DE USUÁRIO|");
	JButton botaosal = new JButton("Salvar");
	JButton botaosai = new JButton("Sair");
	JButton botaolimpa = new JButton("Limpar");
	JTextField textonome = new JTextField();
	JTextField textonlog = new JTextField();
	JTextField textocpf = new JTextField();
	JTextField textoend = new JTextField();
	JPasswordField textosen = new JPasswordField();
	JPanel painel = new JPanel();
	JPanel painel2 = new JPanel();
	JRadioButton rbu_master = new JRadioButton("Master",false);
	JRadioButton rbu_normal = new JRadioButton("Comum",false);
	String tipo_u;
	
	public CadUsu(){
	 ///Criação de objetos
		
		JLabel titulotela = new JLabel("|||||||||||||||||" +
				"||||||||||||||||||||||||||||||||||" +
				"||||||||" +
				"||||||||||||||||||||||||||||||||||||||||" +
				"|||||||||||||||||||||||||||||||||" +
				"|||||||||" +
				">CADASTRO DE USUARIOS DO SISTEMA<|||||||||||||||||||" +
				"||||||||||||||||||||||||||||||||||||||||||||||||||" +
				"|||||||||||||||||||||||||||||||||||||||||||||||||||||||" +
				"||||||||||||||||||||||||||||");
		titulotela.setForeground(Color.yellow);
		painel.setSize(1268,62);
		painel2.setSize(1000,685);
		painel.setBackground(Color.blue.darker());
		painel2.setBackground(Color.black);
		titulotela.setBounds(0, -200,1500 , 500);
		lbldpessoais.setForeground(Color.blue.darker());
		lbldpessoais.setBounds(250, -120, 800, 500);
		lbltip.setForeground(Color.blue.darker());
		lbltip.setBounds(600, 134, 800, 500);
		lbldlogin.setForeground(Color.blue.darker());
		lbldlogin.setBounds(250,365,200,30);
		textonome.setBounds(250, 150,500, 20);
		lblnome.setBounds(136,143,200,30);
		textoend.setBounds(250,200,500,20);
		lblend.setBounds(752,193,200,30);
		textocpf.setBounds(250,250,200,20);
		lblcpf.setBounds(210,243,200,30);
		textonlog.setBounds(250, 400,200,20);
		lblnlogin.setBounds(200,400,200,20);
		textosen.setBounds(250,450,200,20);
		lblsen.setBounds(454,450,200,20);
		botaosal.setBounds(250,600,100,30);
		botaosal.addActionListener(Salvar);
		botaosai.setBounds(400,600,100,30);
		botaosai.addActionListener(Sair);
		botaolimpa.setBounds(325,640,100,30);
		botaolimpa.addActionListener(Limpar);
		rbu_master.setBounds(600,400,200,20);
		rbu_normal.setBounds(600,450,200,20);
		
		
		janela.add(titulotela);
		janela.add(lbldpessoais);
		janela.add(textonome);
		janela.add(lblnome);
		janela.add(textoend);
		janela.add(lblend);
		janela.add(textocpf);
		janela.add(lblcpf);
		janela.add(textonlog);
		janela.add(lblnlogin);
		janela.add(lbldlogin);
		janela.add(textosen);
		janela.add(lblsen);
		janela.add(botaosal);
		janela.add( botaosai);
		janela.add(botaolimpa);
		janela.add(rbu_master);
		janela.add(rbu_normal);
		janela.add(lbltip);
			janela.add(painel);
			janela.add(painel2);
			janela.getContentPane().setLayout(null);//Permite se organizar objetos no frame
	       
			
			ButtonGroup bggroup = new ButtonGroup(); //cria um objeto para agrupar os botoes
			bggroup.add(rbu_master);
		    bggroup.add(rbu_normal);
		   
	
		janela.setExtendedState(MAXIMIZED_BOTH); //maximiza a janela 
		janela.setVisible(true); //torna a janela visivel
      }
	
	
	
	ActionListener Sair = new ActionListener(){ //cria um action listener
												//chama o metodo sai
		public void actionPerformed(ActionEvent actionEvent){
		   Sai();
           
		}	
	};
	  
	ActionListener Salvar = new ActionListener(){ //cria um action listener
												  //que chama o metodo salva.
		public void actionPerformed(ActionEvent actionEvent){
		   Salva(); 
		}
	};
	
	ActionListener Limpar = new ActionListener(){
		public void actionPerformed(ActionEvent actionEvent){
		limpar(); //chamando o metodo limpa quando se clica o botão
		
		}
	};
	
	public void Sai(){	
		
		janela.dispose();
	    

	}
	//metodo salva salva os dados
	public void Salva(){
		
	ConexaoBD grava = new ConexaoBD();
	grava.conectar();
	String nome =this.textonome.getText();
    String end = this.textoend.getText();
    String cpf = this.textocpf.getText();
    String login = this.textonlog.getText();
    String senha = this.textosen.getText();
   
    
    //se o primeiro JRadio Button estiver marcado 
	if(rbu_master.isSelected()){
		tipo_u="M";           
		grava.gravar(nome,end,cpf,login,senha,tipo_u); //grava os dados atraves do metodo gravar
	
	}else if(rbu_normal.isSelected()){ //se o segundo JRadioButton estiver marcado
		tipo_u="N";
		grava.gravar(nome,end,cpf,login,senha,tipo_u);
	}else{   // se nenhum dos JRadio Button estiver marcado
		JOptionPane.showMessageDialog(null,"ESCOLHA UM DOS TIPOS DE USUARIOS.\nDADOS NÃO GRAVADOS!!");
	}
	
	}
	
	
	
	//metodo limpar limpa os campos do formulario
	private void limpar(){
		textonome.setText("");
		textoend.setText("");
		textocpf.setText("");
		textonlog.setText("");
		textosen.setText("");
	}
	

	public static void main(String[] args) {
		
		// TODO Auto-generated method stub

	}

}

5 Respostas

InSeOfKn

Me diz uma coisa, esse JPrincipal tu Herda ele só pra ter o Menu Bar igual em todas as janelas??

se for recomendo criar uma class que estende JMenuBar e tu dar um setJMenuBar em cada janela passando como parâmetro uma nova instancia do objeto que estende JMenuBar

mas acho que para oque você quer poderias nessa class (a que estende JMenuBar) ter um método estático e que retorna uma instancia dela mesmo assim em cada janela terias um setJMenuBar passando como parâmetro esse método estático (não sei se funciona)
ou poderias nessa nova janela passar uma referencia do item do menu que no teu caso é cadclientes e la na janela que abrir no evento de fechar a janela colocar dar uma setEnable(true) nessa referencia (tenho quase certes que funciona).

até

InSeOfKn

editei seu código pra fazer funcionar (não do melhor jeito possível)

ta ai os trechos que eu modifiquei

no Jprincipal

cadusuarios.addActionListener(new ActionListener(){  
			public void actionPerformed(ActionEvent e){  
				new CadUsu(cadusuarios);  
				cadusuarios.setEnabled(false);  

			}  
		}  
		);  
		cadclientes.addActionListener(new ActionListener(){  
			public void actionPerformed(ActionEvent e){  
				new CadUsu(cadclientes);  

			}  
		}

no construtor do CadUsu

public CadUsu(JMenuItem menuItem){ //declaração modificada
		
		this.menuItem = menuItem; // linha adicionada
		
		///Criação de objetos  

		JLabel titulotela = new JLabel("|||||||||||||||||" +  
				"||||||||||||||||||||||||||||||||||" +  
				"||||||||" +  
				"||||||||||||||||||||||||||||||||||||||||" +  
				"|||||||||||||||||||||||||||||||||" +  
				"|||||||||" +  
				">CADASTRO DE USUARIOS DO SISTEMA<|||||||||||||||||||" +  
				"||||||||||||||||||||||||||||||||||||||||||||||||||" +  
				"|||||||||||||||||||||||||||||||||||||||||||||||||||||||" +  
		"||||||||||||||||||||||||||||");  
		titulotela.setForeground(Color.yellow);  
		painel.setSize(1268,62);  
		painel2.setSize(1000,685);  
		painel.setBackground(Color.blue.darker());  
		painel2.setBackground(Color.black);  
		titulotela.setBounds(0, -200,1500 , 500);  
		lbldpessoais.setForeground(Color.blue.darker());  
		lbldpessoais.setBounds(250, -120, 800, 500);  
		lbltip.setForeground(Color.blue.darker());  
		lbltip.setBounds(600, 134, 800, 500);  
		lbldlogin.setForeground(Color.blue.darker());  
		lbldlogin.setBounds(250,365,200,30);  
		textonome.setBounds(250, 150,500, 20);  
		lblnome.setBounds(136,143,200,30);  
		textoend.setBounds(250,200,500,20);  
		lblend.setBounds(752,193,200,30);  
		textocpf.setBounds(250,250,200,20);  
		lblcpf.setBounds(210,243,200,30);  
		textonlog.setBounds(250, 400,200,20);  
		lblnlogin.setBounds(200,400,200,20);  
		textosen.setBounds(250,450,200,20);  
		lblsen.setBounds(454,450,200,20);  
		botaosal.setBounds(250,600,100,30);  
		botaosal.addActionListener(Salvar);  
		botaosai.setBounds(400,600,100,30);  
		botaosai.addActionListener(Sair);  
		botaolimpa.setBounds(325,640,100,30);  
		botaolimpa.addActionListener(Limpar);  
		rbu_master.setBounds(600,400,200,20);  
		rbu_normal.setBounds(600,450,200,20);  


		janela.add(titulotela);  
		janela.add(lbldpessoais);  
		janela.add(textonome);  
		janela.add(lblnome);  
		janela.add(textoend);  
		janela.add(lblend);  
		janela.add(textocpf);  
		janela.add(lblcpf);  
		janela.add(textonlog);  
		janela.add(lblnlogin);  
		janela.add(lbldlogin);  
		janela.add(textosen);  
		janela.add(lblsen);  
		janela.add(botaosal);  
		janela.add( botaosai);  
		janela.add(botaolimpa);  
		janela.add(rbu_master);  
		janela.add(rbu_normal);  
		janela.add(lbltip);  
		janela.add(painel);  
		janela.add(painel2);  
		janela.getContentPane().setLayout(null);//Permite se organizar objetos no frame  


		ButtonGroup bggroup = new ButtonGroup(); //cria um objeto para agrupar os botoes  
		bggroup.add(rbu_master);  
		bggroup.add(rbu_normal);  


		janela.setExtendedState(MAXIMIZED_BOTH); //maximiza a janela   
		janela.setVisible(true); //torna a janela visivel  
	}

no método Sair do CadUse

public void Sai(){    
		menuItem.setEnabled(true); //linha acrescentada 
		janela.dispose();  


	}

lembrando só funcionara se o usuário clicar no botão sair (isso pode mudar ouvindo eventos da janela) e o seu código esta muito fora dos padrões de nomenclaturas

até

ponte

Obrigado pela ajuda ai. Sabe é que to começando a aprender java agora. Comecei a fazer um curso online. Eu sei muito pouca coisa comparado aos recursos que a linguagem tem a oferecer. Ainda não sei utilizar a linguagem da melhor maneira.

InSeOfKn

Eu também não sei nem a metade do que o linguagem é capas!(Também sou novato tenho menos de um ano como programador)

Ma tais satisfeito com a resposta? se sim edita o primeiro tópico e coloca um [Respondido] no titulo (Assunto)

Até a próxima!

ponte

RESPONDIDA

Criado 10 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 5
Participantes 2