使用eclipse创建一个java程序,不能使用netbeans运行它

时间:2011-06-24 16:34:14

标签: java eclipse netbeans

  

可能重复:
  Errors running Java program

我目前正在使用eclipse编写一个java程序。我听说使用netbeans制作java gui比较容易,所以我想尝试使用netbeans来完成这个java程序。但是,当我使用netbeans打开我的项目并运行它时,它会给我一个错误。我想使用betbeans运行相同的程序,在日食下运行良好。

这是错误:

run:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(ImageIcon.java:181)
    at MainForm.addComponentsToPane(MainForm.java:28)
    at MainForm.createAndShowGUI(MainForm.java:112)
    at MainForm.access$000(MainForm.java:15)
    at MainForm$4.run(MainForm.java:125)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:641)
    at java.awt.EventQueue.access$000(EventQueue.java:84)
    at java.awt.EventQueue$1.run(EventQueue.java:602)
    at java.awt.EventQueue$1.run(EventQueue.java:600)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:611)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
BUILD SUCCESSFUL (total time: 8 seconds)

这是即将运行的代码:

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

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;




public class MainForm {

    public static void addComponentsToPane(final JFrame frame, Container pane) {
        Color colorGreen = new Color(0, 100, 0);
        Color colorBrown = new Color(150, 100, 0);
        //Color colorBlue = new Color (0, 0, 150);
        //Font font = new Font("Verdana", Font.BOLD, 12);

        pane.setLayout(null);
        pane.setBackground(new Color (255, 255, 170));

        //add image and necessary labels on top left corner
        //SHA Image and label
        ImageIcon image = new ImageIcon(MainForm.class.getResource("SHA_logo.gif"));    
        JLabel label = new JLabel("Office of Traffic & Safety", image, JLabel.LEFT);
        label.setVerticalTextPosition(JLabel.BOTTOM);
        label.setHorizontalTextPosition(JLabel.CENTER);
        label.setFont(new Font("Times New Roman", Font.PLAIN, 11));
        pane.add(label);
        label.setBounds(50, 10, 130, 100);
        label.setBorder(null);

        //university of maryland image and label\\\
        image = new ImageIcon(MainForm.class.getResource("maryland_flag_round.gif"));   
        label = new JLabel("Univ. of Maryland", image, JLabel.LEFT);
        label.setVerticalTextPosition(JLabel.BOTTOM);
        label.setHorizontalTextPosition(JLabel.CENTER);
        label.setFont(new Font("Times New Roman", Font.PLAIN, 11));
        pane.add(label);
        label.setBounds(190, 10, 130, 90);      
        label.setBorder(null);

        //critical lane label
        label = new JLabel("Critical Lane Volume");
        label.setFont(new Font("Arial Narrow", Font.BOLD, 30));
        label.setForeground(colorGreen);
        pane.add(label);
        label.setBounds(50, 90, 250, 50);
        label.setBorder(null);

        label = new JLabel("<html>Please choose the analysis type:</html>");
        label.setFont(new Font("Arial", Font.BOLD, 18));
        label.setForeground(colorBrown);
        pane.add(label);
        label.setBounds(25, 130, 300, 70);
        label.setBorder(null);  

        //back and exit buttons
        JButton button1 = new JButton("DIAT");
        JButton button2 = new JButton ("Intersection");
        JButton button3 = new JButton ("Exit");
        pane.add(button1);
        pane.add(button2);
        pane.add(button3);
        button1.setBounds(75, 200, 200, 50);
        button2.setBounds(75, 270, 200, 50);
        button3.setBounds(75, 340, 200, 50);

        //add attap label at bottom left
        image = new ImageIcon(MainForm.class.getResource("attap_logo.gif"));    
        label = new JLabel(image);
        pane.add(label);
        label.setBounds(30, 380, 270, 90);      
        label.setBorder(null);

        button1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                frame.setVisible(false);
                frame.dispose();
                InterchangeLoad.main(null);
            }
        }); 

        button2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                frame.setVisible(false);
                frame.dispose();
                MultipleIntersectionLoad.main(null);
            }
        });

        button3.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                frame.setVisible(false);
                frame.dispose();
            }
        });

    }


    private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("Critical Lane Volume");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Set up the content pane.
        addComponentsToPane(frame, frame.getContentPane());

        frame.setSize(350, 500);
        frame.setResizable(false);
        frame.setVisible(true);
    }

    public static void main(String[] args) {

        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });

    }

}

2 个答案:

答案 0 :(得分:1)

找不到你的照片。你确定你的图像处于相同的相对位置吗?它们与MainForm.class文件位于同一位置吗?另外,我会对使用NetBeans创建GUI而不是Eclipse更容易的评论表示异议。我已经使用了两者并且发现它们都很好用,但我建议你避免使用任何代码生成软件,直到你知道Swing好。例如,您最好学习如何使用Swing / AWT布局管理器并避免使用null layout / setBounds。

答案 1 :(得分:1)

您的程序找不到文件“SHA_logo.gif”,因此new ImageIcon(...)new ImageIcon(null),导致NullPointerException。