"ActionListener" funktioniert nicht

francisca93

Mitglied
Hallo,
ich möchte, dass beim Drücken von "Return" aus einem Textfield der Wert ausgelesen und als Variable in einer Instanz gespeichert wird. Der Index des Arrays der Instanz soll vorher aus einer Jlist mit "getSelectedIndex()" ausgelesen werden:

Code:
JTextField textFieldAnzahl = new JTextField();
            textFieldAnzahl.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    int n = listProdukte.getSelectedIndex();
                    w[n].Stueckzahl = Integer.parseInt (textFieldAnzahl.getText());
                                                       
                    double gesamtpreis = 0;
                    for(int i=0; i<w.length; i++)
                        gesamtpreis = (gesamtpreis + w[i].Stueckpreis*w[i].Stueckzahl);
                    double preis = w[n].Stueckpreis*w[n].Stueckzahl;
                   
                    lblGesamtpreisAnz.setText("" + gesamtpreis);
                    lblPreisAnz.setText("" + preis);
                }
            });
Blöderweise passiert überhaupt nichts, der ActionListener scheint gar nicht anzuspringen. Dafür kommen unten eine Menge Meldungen in roter Schrift, wenn ich Return drücke:

Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at praktikum_3.Praktikum_3$2.actionPerformed(Praktikum_3.java:113)
    at javax.swing.JTextField.fireActionPerformed(Unknown Source)
    at javax.swing.JTextField.postActionEvent(Unknown Source)
    at javax.swing.JTextField$NotifyAction.actionPerformed(Unknown Source)
(und noch ein paar hundert Zeilen...)

Was könnte denn da falsch sein?
 

Robat

Top Contributor
Die "Meldungen in roter Schrift" nennen sich Exceptions. Aus denen kann man eine ganze Menge ablesen, wenn man weiß wo ;)

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Hier siehst du bspw. dass es sich um eine NullpointerException handelt was bedeutet dass du versuchst auf ein Objekt zuzugreifen (bspw eine Methode aufzurufen) welches noch gar nicht initialisiert ist. Demnach ist dieses Objekt null.

t praktikum_3.Praktikum_3$2.actionPerformed(Praktikum_3.java:113)
Hier siehst du dass es sich um die Zeile 113 in der Klasse Praktikum_3 handelt. Schreib am Besten mal welche Zeile das genau ist dann kann man gemeinsam schauen wo der Fehler liegt.

Gruß Robert
 

francisca93

Mitglied
Danke. Also die Zeile 113 ist diese: int n = listProdukte.getSelectedIndex();

Die listProdukte ist weiter unten im Text als JList definiert. Ich setze mal den ganzen Text hin:

Code:
package praktikum_3;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JList;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.DefaultListModel;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.ListSelectionEvent;
import javax.swing.ListSelectionModel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.text.*;




public class Praktikum_3 extends JFrame {
   
    private JPanel contentPane;
    private JList listProdukte;
    private JLabel lblProdukt;
    private JLabel lblStueckpreis;
    private JLabel lblAnzahl;
    private JLabel lblPreis;
    private JLabel lblGesamtpreis;
    private JLabel lblStueckpreisAnz;
    private JLabel lblPreisAnz;
    private JLabel lblGesamtpreisAnz;
    private JTextField textFieldAnzahl;
   
    DecimalFormat f = new DecimalFormat("#0.00");
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Praktikum_3 frame = new Praktikum_3();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Praktikum_3() {
       
        init();
    }   
   
    public Werkzeug w[] = {
            new Werkzeug("Schraubenzieher", 8.95),
            new Werkzeug("Hammer", 6.49),
            new Werkzeug("Maurerkelle", 9.95),
            new Werkzeug("Zollstock", 2.49),
            new Werkzeug("Hobel", 15.95)
    };
   
        public void init(){   
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 450, 300);
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);
                       
            lblProdukt = new JLabel("Produkt:");
            lblProdukt.setBounds(30, 30, 55, 16);
            contentPane.add(lblProdukt);
           
            lblStueckpreis = new JLabel("Stueckpreis:");
            lblStueckpreis.setBounds(204, 70, 83, 16);
            contentPane.add(lblStueckpreis);
           
            lblAnzahl = new JLabel("Anzahl:");
            lblAnzahl.setBounds(204, 114, 55, 16);
            contentPane.add(lblAnzahl);
           
            lblPreis = new JLabel("Preis:");
            lblPreis.setBounds(204, 162, 55, 16);
            contentPane.add(lblPreis);
           
            lblGesamtpreis = new JLabel("Gesamtpreis:");
            lblGesamtpreis.setBounds(204, 219, 83, 16);
            contentPane.add(lblGesamtpreis);
           
            lblStueckpreisAnz = new JLabel("New label");
            lblStueckpreisAnz.setBounds(324, 70, 55, 16);
            contentPane.add(lblStueckpreisAnz);
           
            lblPreisAnz = new JLabel("New label");
            lblPreisAnz.setBounds(324, 162, 55, 16);
            contentPane.add(lblPreisAnz);
           
            lblGesamtpreisAnz = new JLabel("New label");
            lblGesamtpreisAnz.setBounds(324, 219, 55, 16);
            contentPane.add(lblGesamtpreisAnz);
                           
            JTextField textFieldAnzahl = new JTextField();
            textFieldAnzahl.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    int n = listProdukte.getSelectedIndex();
                    w[n].Stueckzahl = Integer.parseInt (textFieldAnzahl.getText());
                                                       
                    double gesamtpreis = 0;
                    for(int i=0; i<w.length; i++)
                        gesamtpreis = (gesamtpreis + w[i].Stueckpreis*w[i].Stueckzahl);
                    double preis = w[n].Stueckpreis*w[n].Stueckzahl;
                   
                    lblGesamtpreisAnz.setText("" + gesamtpreis);
                    lblPreisAnz.setText("" + preis);
                }
            });
           
            textFieldAnzahl.setBounds(320, 112, 59, 20);
            contentPane.add(textFieldAnzahl);
            textFieldAnzahl.setColumns(10);
           
            DefaultListModel listModel = new DefaultListModel();
           
            JList listProdukte = new JList(listModel);
            listProdukte.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            listProdukte.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    int i = listProdukte.getSelectedIndex();
                    if ((i>=0)&&(i<=w.length)){
                        lblStueckpreisAnz.setText("" + w[i].Stueckpreis);   
                        textFieldAnzahl.setText("" + w[i].Stueckzahl);
                    }   
                }
            });
           
            listProdukte.setBounds(30, 69, 145, 166);
            contentPane.add(listProdukte);
                                   
             for (int i=0; i<w.length; i++)
            listModel.addElement(w[i].name);       
                   
        }
               
}

Code:
package praktikum_3;

public class Werkzeug {
   
    String name;
    double Stueckpreis;
    int Stueckzahl;
   
    public Werkzeug(String n, double s){
        name = n;
        Stueckpreis = s;
        Stueckzahl = 0;
    }
}
 

Robat

Top Contributor
int n = listProdukte.getSelectedIndex();
Wie erwartet ist also deine listProdukte noch null in dem Moment wo der Listener aufgerufen wird.

Das solltest du relativ leicht beheben können in dem du die Initialisierung des listModels und der listProdukte
Java:
DefaultListModel listModel = new DefaultListModel();
JList listProdukte = new JList(listModel);
vor die des textFieldAnzahl schiebst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
S Button (ActionListener) funktioniert nicht, wenn y-Koordinate verändert wird AWT, Swing, JavaFX & SWT 5
F ActionListener von JButton funktioniert mit JFrame aber nicht mit JDialog AWT, Swing, JavaFX & SWT 2
G ActionListener auf JMenu funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
L jComboBox Actionlistener wird beim erstmaligen Befüllen getriggert AWT, Swing, JavaFX & SWT 7
H Viele ActionListener (MouseListener) - Performance AWT, Swing, JavaFX & SWT 24
pkm MainFrame durch Actionlistener auffrischen, aber wie? AWT, Swing, JavaFX & SWT 2
L actionListener für Button AWT, Swing, JavaFX & SWT 97
N Bilder auf Button einfügen und mehrmals ändern (ein Button, mehrere ActionListener) AWT, Swing, JavaFX & SWT 2
R ActionListener in Actionlistener AWT, Swing, JavaFX & SWT 6
S Swing Variable in Actionlistener aufrufen AWT, Swing, JavaFX & SWT 10
P Swing ActionListener überschreibt einen Wert aus der Hauptklasse nicht AWT, Swing, JavaFX & SWT 5
N Aufruf einer anderen Klasse durch Button ActionListener AWT, Swing, JavaFX & SWT 2
M AWT Kann meinen Fehler beim ActionListener nicht finden AWT, Swing, JavaFX & SWT 5
F Wie bekomme ich den Wert der ComboBox in eine Variable gespeichert welche ich für meinen ActionListener nutzen kann? AWT, Swing, JavaFX & SWT 3
L Ein Actionlistener für ein Textfeld, anstatt viele Actionlistener für ein Textfeld AWT, Swing, JavaFX & SWT 7
coolian ActionListener funktonirt nicht richtig auf JMenuItem AWT, Swing, JavaFX & SWT 4
L ActionListener zu Button in Panel hinzufügen AWT, Swing, JavaFX & SWT 10
R Kann JLabel in ActionListener nicht aufrufen AWT, Swing, JavaFX & SWT 4
Blender3D einzelner ActionListener vs anonyme ActionListener AWT, Swing, JavaFX & SWT 10
T Swing Änderung des ActionListener Events nach Klick auf JButton AWT, Swing, JavaFX & SWT 2
xYurisha ActionListener Methoden Buttons zuweisen! AWT, Swing, JavaFX & SWT 16
J ActionListener bei Buttons AWT, Swing, JavaFX & SWT 14
S Swing Problem mit Button und ActionListener AWT, Swing, JavaFX & SWT 5
it_is_all Event Handling ActionListener in anderer Klasse klappt nicht AWT, Swing, JavaFX & SWT 4
Z ActionListener Variable übergeben AWT, Swing, JavaFX & SWT 12
T JProgressbar während actionListener updaten AWT, Swing, JavaFX & SWT 1
S While Schleife im Actionlistener AWT, Swing, JavaFX & SWT 1
S ActionListener für alle Buttons AWT, Swing, JavaFX & SWT 26
R Swing ActionListener bei JButton AWT, Swing, JavaFX & SWT 9
T ActionListener nimmt JTextField nicht mehr an. AWT, Swing, JavaFX & SWT 2
P ActionListener Graphics Einbauen AWT, Swing, JavaFX & SWT 0
S actionlistener mit 2 fenster integrieren AWT, Swing, JavaFX & SWT 11
Liondary GUI - ActionListener AWT, Swing, JavaFX & SWT 7
J ActionListener erkennt Variable nicht AWT, Swing, JavaFX & SWT 6
E ActionListener führt falsche Funktion aus AWT, Swing, JavaFX & SWT 6
Sin137 ActionListener in MVC AWT, Swing, JavaFX & SWT 7
M ActionListener und mathematische Methoden AWT, Swing, JavaFX & SWT 13
A Oberfläche mit zwei Klassen und actionlistener verbinden AWT, Swing, JavaFX & SWT 7
Paul15 ActionListener Variablen AWT, Swing, JavaFX & SWT 13
Y ActionListener AWT, Swing, JavaFX & SWT 2
K Ereignisbehandlung, ActionListener, ActionEvent AWT, Swing, JavaFX & SWT 3
A Gui für Vokabeltrainer (ActionListener) AWT, Swing, JavaFX & SWT 14
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
J Event Handling JOptionPane ActionListener setzen. AWT, Swing, JavaFX & SWT 3
S ActionListener Klasse aufrufen AWT, Swing, JavaFX & SWT 4
R Swing Problem: IOException bei ActionListener AWT, Swing, JavaFX & SWT 1
J ActionListener soll auf paint() Methode zugreifen AWT, Swing, JavaFX & SWT 1
A JButton wird bei ActionListener nicht "angenommen" AWT, Swing, JavaFX & SWT 7
T Einfaches Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
K ActionListener mit KeyListener AWT, Swing, JavaFX & SWT 7
K GUI, Button, ActionListener - ein paar Einsteigerprobleme AWT, Swing, JavaFX & SWT 1
W Verschachtelter ActionListener AWT, Swing, JavaFX & SWT 0
N gewünschte ActionListener bei RadioButton mit isSelected geht nicht AWT, Swing, JavaFX & SWT 2
C Probleme mit Buttons und einem ActionListener AWT, Swing, JavaFX & SWT 2
K Swing JMenu und ActionListener AWT, Swing, JavaFX & SWT 4
A Swing ActionListener AWT, Swing, JavaFX & SWT 8
V ActionListener Abhängigkeitenproblem AWT, Swing, JavaFX & SWT 6
M ActionListener für mehrere Klassen AWT, Swing, JavaFX & SWT 4
J ActionListener für Buttons AWT, Swing, JavaFX & SWT 3
M Event Handling ActionListener übergeben ich checks net AWT, Swing, JavaFX & SWT 4
C Swing ComboBox - ActionListener deaktivieren AWT, Swing, JavaFX & SWT 2
L Swing ActionListener führt seine Aufgabe nur teilweise aus. AWT, Swing, JavaFX & SWT 7
A Swing ActionListener kann nicht hinzugefügt werden AWT, Swing, JavaFX & SWT 4
P Actionlistener - 3 klassen - kompliziert - auf methoden zugreifen AWT, Swing, JavaFX & SWT 3
Q CardLayout, ausgelagerte Panels, ActionListener AWT, Swing, JavaFX & SWT 5
M ProgressBar in ActionListener AWT, Swing, JavaFX & SWT 4
D AWT eigenem Knopf ActionListener zuweisen AWT, Swing, JavaFX & SWT 24
E Wert aus ActionListener geben AWT, Swing, JavaFX & SWT 4
J ActionListener per Innere Klasse oder e.getActionCommand() if-Abfrage? AWT, Swing, JavaFX & SWT 12
L Swing ActionListener zugriff auf bestimmte Elemente AWT, Swing, JavaFX & SWT 3
P Swing Seltsames ActionListener-Verhalten AWT, Swing, JavaFX & SWT 7
Oliver530 ActionListener von eigener ButtonKlasse AWT, Swing, JavaFX & SWT 16
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 2
Kenan89 statischer ActionListener keine Wirkung? AWT, Swing, JavaFX & SWT 3
C In der Schleife ActionListener aktivieren AWT, Swing, JavaFX & SWT 3
B Swing Problem beim ActionListener AWT, Swing, JavaFX & SWT 5
P Swing JPanel mit ActionListener mehrfach verwenden AWT, Swing, JavaFX & SWT 8
1 ActionEvent generieren und an ActionListener weiterleiten AWT, Swing, JavaFX & SWT 12
N Swing Klasse erbt von JDialog - Problem mit innerer ActionListener-Klasse AWT, Swing, JavaFX & SWT 6
N JCombobox und Actionlistener Aktion nur ausführen, wenn Useraktion ihn auslöst AWT, Swing, JavaFX & SWT 4
N Componente und Actionlistener AWT, Swing, JavaFX & SWT 5
C ActionListener AWT, Swing, JavaFX & SWT 6
Corben ActionListener Error AWT, Swing, JavaFX & SWT 2
F Wert durch ActionListener an Klasse übergeben AWT, Swing, JavaFX & SWT 3
I Swing Problem mit InputMap bei JButton (ActionListener) AWT, Swing, JavaFX & SWT 3
S Swing JButton mit ActionListener innerhalb einer JTable AWT, Swing, JavaFX & SWT 4
P Variablen in einem ActionListener zurücksetzen AWT, Swing, JavaFX & SWT 6
M AWT Problem mit ActionListener AWT, Swing, JavaFX & SWT 2
A Swing Bug in Swing? Wenn checkbox disabled reagiert ActionListener nicht AWT, Swing, JavaFX & SWT 5
S ActionListener "nach oben weitergeben" AWT, Swing, JavaFX & SWT 10
M Anonymer ActionListener AWT, Swing, JavaFX & SWT 4
L SWT Actionlistener Combobox öffnen AWT, Swing, JavaFX & SWT 4
S MenuBar ActionListener Event ... AWT, Swing, JavaFX & SWT 6
B Swing Formular mit mehreren Elementen - wie die ActionListener-Verarbeitung lösen? AWT, Swing, JavaFX & SWT 2
M getSource() findet Button nicht - ActionListener AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben