[RESOLVIDO] Problema em interface gráfica em java

1 resposta
P

Erro:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at teste.TesteMenu.inicialixarComponentes(TesteMenu.java:26)
	at teste.TesteMenu.<init>(TesteMenu.java:14)
	at teste.TesteMenu.abrir(TesteMenu.java:51)
	at teste.Teste$1.actionPerformed(Teste.java:51)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2346)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
	at java.awt.Component.processMouseEvent(Component.java:6525)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6290)
	at java.awt.Container.processEvent(Container.java:2234)
	at java.awt.Component.dispatchEventImpl(Component.java:4881)
	at java.awt.Container.dispatchEventImpl(Container.java:2292)
	at java.awt.Component.dispatchEvent(Component.java:4703)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4898)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4533)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4462)
	at java.awt.Container.dispatchEventImpl(Container.java:2278)
	at java.awt.Window.dispatchEventImpl(Window.java:2750)
	at java.awt.Component.dispatchEvent(Component.java:4703)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:86)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
	at java.awt.EventQueue$4.run(EventQueue.java:729)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

ProjetoPrincipal.java:

package projetoprincipal;    
    
import java.awt.*;    
import java.awt.event.*;    
import javax.swing.*;    
    
public class ProjetoPrincipal extends JFrame{    
    private Container contentPane;    
    private JMenuBar mnBarra;    
    private JMenu mnArquivo, mnExemplos;    
    private JMenuItem miSair, miBotao;    
        
    public ProjetoPrincipal() {    
        inicialixarComponentes();    
        definirEventos();    
    }    
        
    private void inicialixarComponentes() {    
        setTitle("Login no Sistema");    
        setBounds(0, 0, 800, 600);    
        contentPane = getContentPane();    
        mnBarra = new JMenuBar();    
        mnArquivo =  new JMenu("Arquivo");    
        mnArquivo.setMnemonic('A');
        mnExemplos = new JMenu("Exemplos");    
        mnExemplos.setMnemonic('E');   
        miSair = new JMenuItem("Sair", new ImageIcon("sair.jpg"));
        miSair.setAccelerator(KeyStroke.getKeyStroke(    
                KeyEvent.VK_S, ActionEvent.ALT_MASK));    
        miBotao = new JMenuItem("Botao");    
        mnArquivo.add(miSair);    
        mnExemplos.add(miBotao);    
        mnBarra.add(mnArquivo);    
        mnBarra.add(mnExemplos);    
        setJMenuBar(mnBarra);    
    }    
        
    private void definirEventos() {    
        miSair.addActionListener(new ActionListener() {    
            public void actionPerformed(ActionEvent e) {    
                System.exit(0);    
            }    
        });    
        
        miBotao.addActionListener(new ActionListener() {    
            public void actionPerformed(ActionEvent e) {    
                System.exit(0);          
            }    
        });    
    }    
        
        public static void abrir() {    
        ProjetoPrincipal frame = new ProjetoPrincipal();    
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    
        Dimension tela = Toolkit.getDefaultToolkit().getScreenSize();    
        frame.setLocation((tela.width - frame.getSize().width) / 2,    
                (tela.height - frame.getSize().height) / 2);    
        frame.setVisible(true);      
    }    
}

1 Resposta

L

Você tem que instanciar o JMenuItem antes de definir propriedades nele

O seu problema está na classe ProjetoPrincipal no metodo " inicialixarComponentes() "

Faça assim para todos os seus JMenuItens

miSair = new JMenuItem();//essa linha que está faltando no seu codigo
miSair.setAccelerator(KeyStroke.getKeyStroke(    
                KeyEvent.VK_S, ActionEvent.ALT_MASK)); 
...
Criado 23 de maio de 2015
Ultima resposta 25 de mai. de 2015
Respostas 1
Participantes 2