wake-up-neo.net

Ausnahme im Thread "AWT-EventQueue-0" Java.lang.NullPointerException Fehler

Hallo, ich bin ein neuer Programmierer auf der Highschool-Ebene, daher weiß ich nicht viel über Programmieren und erhalte eine ganze Reihe von Fehlern, die behoben wurden, während andere ich überhaupt nicht verstehe. Ich soll ein einfaches Check Box - Auswahlprogramm erstellen, in dem der Benutzer zwischen verschiedenen Auswahlmöglichkeiten wählen kann und je nach Aktion das Bild wechselt. Das Programm selbst wird perfekt kompiliert, aber wenn ich es ausführe, entstehen mir einige Komplikationen. Hier ist mein Programm:

package components;

import Java.awt.*;
import Java.awt.event.*;
import javax.swing.*;

public class Workshop extends JPanel
                      implements ItemListener {
JCheckBox winterhatButton;
JCheckBox sportshatButton;
JCheckBox santahatButton;
JCheckBox redshirtButton;
JCheckBox brownshirtButton;
JCheckBox suitButton;
JCheckBox denimjeansButton;
JCheckBox blackpantsButton;
JCheckBox khakipantsButton;


    StringBuffer choices;
JLabel pictureLabel;

public Workshop() {
    super(new BorderLayout());

    //Create the check boxes.
    winterhatButton = new JCheckBox("Winter Hat");
    winterhatButton.setMnemonic(KeyEvent.VK_Q);


    sportshatButton = new JCheckBox("Sports Hat");
    sportshatButton.setMnemonic(KeyEvent.VK_W);


    santahatButton = new JCheckBox("Santa hat");
    santahatButton.setMnemonic(KeyEvent.VK_E);


    redshirtButton = new JCheckBox("Red Shirt");
    redshirtButton.setMnemonic(KeyEvent.VK_R);


    brownshirtButton = new JCheckBox("Brown Shirt");
    brownshirtButton.setMnemonic(KeyEvent.VK_T);


    suitButton = new JCheckBox("Suit");
    suitButton.setMnemonic(KeyEvent.VK_Y);


    suitButton = new JCheckBox("Denim Jeans");
    suitButton.setMnemonic(KeyEvent.VK_U);


    blackpantsButton = new JCheckBox("Black Pants");
    blackpantsButton.setMnemonic(KeyEvent.VK_I);


    khakipantsButton = new JCheckBox("Khaki Pants");
    khakipantsButton.setMnemonic(KeyEvent.VK_O);



    //Register a listener for the check boxes.

    winterhatButton.addItemListener(this);
    sportshatButton.addItemListener(this);
    santahatButton.addItemListener(this);
    redshirtButton.addItemListener(this);
    brownshirtButton.addItemListener(this);
    suitButton.addItemListener(this);
    denimjeansButton.addItemListener(this);
    blackpantsButton.addItemListener(this);
    khakipantsButton.addItemListener(this);


    //Indicates
    choices = new StringBuffer("---------");


    //Set up the picture label
    pictureLabel = new JLabel();
    pictureLabel.setFont(pictureLabel.getFont().deriveFont(Font.ITALIC));
    updatePicture();

     //Put the check boxes in a column in a panel
    JPanel checkPanel = new JPanel(new GridLayout(0, 1));
    checkPanel.add(winterhatButton);
    checkPanel.add(sportshatButton);
    checkPanel.add(santahatButton);
    checkPanel.add(redshirtButton);
    checkPanel.add(brownshirtButton);
    checkPanel.add(suitButton);
    checkPanel.add(denimjeansButton);
    checkPanel.add(blackpantsButton);
    checkPanel.add(khakipantsButton);


    add(checkPanel, BorderLayout.LINE_START);
    add(pictureLabel, BorderLayout.CENTER);
    setBorder(BorderFactory.createEmptyBorder(20,20,20,20));
}


    /** Listens to the check boxes. */
public void itemStateChanged(ItemEvent e) {
    int index = 0;
    char c = '-';
    Object source = e.getItemSelectable();

    if (source == winterhatButton) {
        index = 0;
        c = 'q';
    } else if (source == sportshatButton) {
        index = 1;
        c = 'w';
    } else if (source == santahatButton) {
        index = 2;
        c = 'e';
    } else if (source == redshirtButton) {
        index = 3;
        c = 'r';
    } else if (source == brownshirtButton) {
        index = 4;
        c = 't';
    } else if (source == suitButton) {
        index = 5;
        c = 'y';
    } else if (source == denimjeansButton) {
        index = 6;
        c = 'u';
    } else if (source == blackpantsButton) {
        index = 7;
        c = 'i';
    } else if (source == khakipantsButton) {
        index = 8;
        c = 'o';
    } 


    if (e.getStateChange() == ItemEvent.DESELECTED) {
        c = '-';
    }

    //Apply the change to the string.
    choices.setCharAt(index, c);

    updatePicture();
}


protected void updatePicture() {
    //Get the icon corresponding to the image.
    ImageIcon icon = createImageIcon(
                                "images/bear/bear-"
                                + choices.toString()
                                + ".gif");
    pictureLabel.setIcon(icon);
    pictureLabel.setToolTipText(choices.toString());
    if (icon == null) {
        pictureLabel.setText("Missing Image");
    } else {
        pictureLabel.setText(null);
    }
}

/** Returns an ImageIcon, or null if the path was invalid. */
protected static ImageIcon createImageIcon(String path) {
    Java.net.URL imgURL = Workshop.class.getResource(path);
    if (imgURL != null) {
        return new ImageIcon(imgURL);
    } else {
        System.err.println("Couldn't find file: " + path);
        return null;
    }
}

  private static void createAndShowGUI() {
    //Create and set up the window.
    JFrame frame = new JFrame("Build a Bear at Safeer's Workshop!");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    //Create and set up the content pane.
    JComponent newContentPane = new Workshop();
    newContentPane.setOpaque(true); //content panes must be opaque
    frame.setContentPane(newContentPane);

    //Display the window.
    frame.pack();
    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();
        }
    });
}
}

Gut bis zu diesem Teil läuft es reibungslos und entspricht, aber wenn ich fortfahre, das Programm auszuführen, erhalte ich diesen Fehler.

> run components.Workshop
Exception in thread "AWT-EventQueue-0" Java.lang.NullPointerException
at components.Workshop.<init>(Workshop.Java:75)
at components.Workshop.createAndShowGUI(Workshop.Java:195)
at components.Workshop.access$0(Workshop.Java:189)
at components.Workshop$1.run(Workshop.Java:209)
at Java.awt.event.InvocationEvent.dispatch(Unknown Source)
at Java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at Java.awt.EventQueue.access$000(Unknown Source)
at Java.awt.EventQueue$3.run(Unknown Source)
at Java.awt.EventQueue$3.run(Unknown Source)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
at Java.awt.EventQueue.dispatchEvent(Unknown Source)
at Java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at Java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at Java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at Java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at Java.awt.EventDispatchThread.run(Unknown Source)

Könnte ein dummer Fehler sein, aber ich kann das nicht herausfinden. Bitte helfen Sie und danke

     Here is the line that generates that error 
     private void jButtonSendActionPerformed(Java.awt.event.ActionEvent evt)   {                                                
    // TODO add your handling code here:
    String message;
    if(messageBox.getText().length() > 0){
        message  =  messageBox.getText();
        chatBox.append(message+"\n"); 
        printStream.println(message);//this line 
        printStream.flush();
        //printStream.close();
        messageBox.setText("");
    }
} 
9
user3214098

NullPointerExceptions gehören häufig zu den am einfachsten zu diagnostizierenden Ausnahmen. Wann immer Sie eine Ausnahme in Java und Sie sehen den Stack-Trace (so heißt übrigens Ihr zweiter Anführungszeichenblock), lesen Sie von oben nach unten. Oft werden Sie sehen Ausnahmen, die im Java Bibliothekscode oder in systemeigenen Implementierungsmethoden beginnen, können zur Diagnose einfach übersprungen werden, bis eine von Ihnen geschriebene Codedatei angezeigt wird.

Dann mögen Sie die angegebene Zeile und sehen sich jedes der Objekte (instanziierte Klassen) in dieser Zeile an - eines davon wurde nicht erstellt und Sie haben versucht, es zu verwenden. Sie können damit beginnen, in Ihrem Code nachzuschlagen, ob Sie den Konstruktor für dieses Objekt aufgerufen haben. Wenn dies nicht der Fall ist, müssen Sie das Objekt instanziieren, indem Sie den neuen Klassennamen (Argumente) aufrufen. Eine weitere häufige Ursache für NullPointerExceptions ist die versehentliche Deklaration eines Objekts mit lokalem Gültigkeitsbereich, wenn eine Instanzvariable mit demselben Namen vorhanden ist.

In Ihrem Fall ist die Ausnahme in Ihrem Konstruktor für Workshop in Zeile 75 aufgetreten. <init> bezeichnet den Konstruktor für eine Klasse. Wenn Sie in Ihrem Code auf diese Zeile schauen, sehen Sie die Zeile

denimjeansButton.addItemListener(this);

In dieser Zeile befinden sich zwei Objekte: denimjeansButton und this. this ist gleichbedeutend mit der Klasseninstanz, in der Sie sich gerade befinden und in der Sie sich im Konstruktor befinden. Es kann also nicht this sein. denimjeansButton ist dein Schuldiger. Sie haben dieses Objekt nie instanziiert. Entfernen Sie den Verweis auf die Instanzvariable denimjeansButton oder instanziieren Sie ihn.

24
chirality

Im oberen Bereich des Codes mit dem Public Workshop () nehme ich dieses Bit an,

suitButton = new JCheckBox("Suit");
suitButton.setMnemonic(KeyEvent.VK_Y);


suitButton = new JCheckBox("Denim Jeans");
suitButton.setMnemonic(KeyEvent.VK_U);

sollte vielleicht sein,

suitButton = new JCheckBox("Suit");
suitButton.setMnemonic(KeyEvent.VK_Y);


denimjeansButton = new JCheckBox("Denim Jeans");
denimjeansButton.setMnemonic(KeyEvent.VK_U);
0
Les Butler