Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EventQueue和EventDispatch错误_Java_Jframe_Jpanel - Fatal编程技术网

Java EventQueue和EventDispatch错误

Java EventQueue和EventDispatch错误,java,jframe,jpanel,Java,Jframe,Jpanel,我正在构建一个Java程序,该程序允许基于菜单栏中的径向按钮单击更改图像。我相信大部分代码都是准确的,但是,我遇到了一个减速带。我怎样才能找出为什么我会犯这么多错误 import java.awt.*; import java.awt.event.*; import javax.swing.JMenu; import javax.swing.JMenuItem; import javax.swing.JCheckBoxMenuItem; import javax.swing.JRadioButt

我正在构建一个Java程序,该程序允许基于菜单栏中的径向按钮单击更改图像。我相信大部分代码都是准确的,但是,我遇到了一个减速带。我怎样才能找出为什么我会犯这么多错误

import java.awt.*;
import java.awt.event.*;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JRadioButtonMenuItem;
import javax.swing.ButtonGroup;
import javax.swing.JMenuBar;
import javax.swing.KeyStroke;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.*;

public class MenuAssignment extends JFrame implements ActionListener {

    // Images, taken from the official Java Documentation
    static String catString = "Cat";
    static String dogString = "Dog";
    
    // Setup label
    JLabel picture;
    ImageIcon image;
    
    // Radio buttons
    private JRadioButtonMenuItem catSelect;
    private JRadioButtonMenuItem dogSelect;

    public MenuAssignment() {
        
        // Start with cat image
        image = new ImageIcon("images/" + catString + ".gif");
        picture.setIcon(image);
    }
    
    private void createMenuBar() {
        JMenuBar menuBar;
        JMenu menu, submenu;
        JMenuItem menuItem;
        JRadioButtonMenuItem rbMenuItem;

        //Create the menu bar.
        menuBar = new JMenuBar();
        
        //Build the first menu.
        menu = new JMenu("Animals");
        menuBar.add(menu);
        
        image = new ImageIcon("images/Dog.gif");       
        picture = new JLabel(image);
        add(picture);
        
        // Create group of radio buttons
        ButtonGroup group = new ButtonGroup();
        
        // Cat Button
        catSelect = new JRadioButtonMenuItem("Cat");
        catSelect.setActionCommand("Cat");
        catSelect.setSelected(true);
        
        // Dog Button
        dogSelect = new JRadioButtonMenuItem("Dog");
        dogSelect.setActionCommand("Dog");
        
        // Listen for Option
        catSelect.addActionListener(this);
        dogSelect.addActionListener(this);
        
        // return menuBar;
    }
    
    public void actionPerformed(ActionEvent e) {
      image = new ImageIcon("images/" + e.getActionCommand() + ".gif");
      picture.setIcon(image);
      System.out.println(e.getActionCommand());
  }
  
    public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {
            public void run() {
                MenuAssignment start = new MenuAssignment();
                start.setVisible(true);
            }
        });
    }
}
错误:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at MenuAssignment.<init>(MenuAssignment.java:33)
    at MenuAssignment$1.run(MenuAssignment.java:82)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
线程“AWT-EventQueue-0”java.lang.NullPointerException中的异常 在MenuAssignment.(MenuAssignment.java:33) 在MenuAssignment$1.run(MenuAssignment.java:82) 在java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)中 位于java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715) 在java.awt.EventQueue.access$400(EventQueue.java:82) 在java.awt.EventQueue$2.run(EventQueue.java:676) 在java.awt.EventQueue$2.run(EventQueue.java:674) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86) 位于java.awt.EventQueue.dispatchEvent(EventQueue.java:685) 位于java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296) 位于java.awt.EventDispatchThread.PumpeEventsforFilter(EventDispatchThread.java:211) 位于java.awt.EventDispatchThread.PumpeEventsforHierarchy(EventDispatchThread.java:201) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196) 位于java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188) 在java.awt.EventDispatchThread.run处(EventDispatchThread.java:122)
  • 线程“AWT-EventQueue-0”java.lang.NullPointerException中出现异常
    ,原因是在使用
    图片之前未对其进行初始化
  • createMenuBar
    从未被调用,因此不会向屏幕添加任何内容
  • menuBar
    从未分配给帧(
    setJMenuBar
    ),因此它不会出现
  • 菜单
    catSelect
    dogSelect
    从未添加到
    菜单
  • 默认情况下选择“cat”菜单项,该菜单项与屏幕上的内容不匹配

  • “我遇到了一个减速带。有人能帮我完成我的程序吗?为什么我会遇到这么多错误”。。。比如什么(错误)?程序员:添加的错误可能重复