Não consigo inserir um JMenu e JMenu Item [resolvido]

3 respostas
Q
public class Principal extends JFrame {  
   
    private static JLabel cimaMenu;
	private static Window Clientes;


	public Principal () {  
    super ("Principal");  
    setExtendedState(JFrame.MAXIMIZED_BOTH);
    
    initComponents();
    }  
  
        
    private void initComponents() {
    	JMenu cimaMenu = new javax.swing.JMenu();
    	JMenuItem Clientes = new javax.swing.JMenuItem();	
		}


	public static void main (String [] args) {  
    	Principal janela = new Principal ();
        janela.setVisible (true);
        
        
        cimaMenu.setText("Cadastro");
        janela.add(cimaMenu);
        cimaMenu.setVisible(true);
        Clientes.setVisible(true);
                                
    }      
}

da o erro

Exception in thread “main” java.lang.NullPointerException
at Interface.Principal.main(Principal.java:37)

se eu comento //cimaMenu.setText(“Cadastro”);

da o erro

Exception in thread “main” java.lang.NullPointerException

at java.awt.Container.addImpl(Unknown Source)

at java.awt.Container.add(Unknown Source)

at javax.swing.JFrame.addImpl(Unknown Source)

at java.awt.Container.add(Unknown Source)

at Interface.Principal.main(Principal.java:38)

se eu comento a linha // janela.add(cimaMenu);

Exception in thread “main” java.lang.NullPointerException
at Interface.Principal.main(Principal.java:39)

se eu comento a linha // cimaMenu.setVisible(true);

Exception in thread “main” java.lang.NullPointerException
at Interface.Principal.main(Principal.java:40)

se eu comento //Clientes.setVisible(true);

aparece a tela maximizada normal sem nada.

3 Respostas

E
  1. Que mania, a de usar variáveis e métodos estáticos! Só use variáveis estáticas se souber o que está fazendo (o que não parece ser o seu caso).
  2. Você está “escondendo” a variável cimaMenu declarando outra variável local cimaMenu dentro do método initComponents. Foi isso que gerou o “null pointer exception”. A mesma coisa com a variável “Clientes”.
  3. Use sempre um padrão para dar nomes a variáveis e métodos. Comece os nomes das suas variáveis por minúsculas, e de seus métodos por minúsculas também; reserve nomes com maiúsculas para classes e interfaces. Só isso vai lhe evitar um monte de confusão.
ddenis3526

100%

import javax.swing.*;

public class Principal extends JFrame {

    public Principal() {
        super("Principal");
        initComponents();
    }

    private void initComponents() {

        JMenuBar menuBar = new JMenuBar();
        JMenu cimaMenu = new JMenu("Cadastro");
        JMenuItem Clientes = new JMenuItem("Clientes");

        this.setJMenuBar(menuBar);
        menuBar.add(cimaMenu);
        cimaMenu.add(Clientes);
    }

    public static void main(String[] args) {
        Principal janela = new Principal();
        janela.setExtendedState(JFrame.MAXIMIZED_BOTH);
        janela.setVisible(true);
    }
}
Q

Deu certo Ddenis3526, tu é o cara.

Criado 21 de março de 2012
Ultima resposta 22 de mar. de 2012
Respostas 3
Participantes 3