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



可能重复:
运行Java程序时出错

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

这就是错误:

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();
            }
        });
    }
}

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

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

相关内容

  • 没有找到相关文章

最新更新