Exception dans le thread "AWT-EventQueue-0" java.lang.NullPointerException calculatrice d'intérêt Java GUI de base

shampooing simon:

Je suis un joli programmeur débutant essayant d'apprendre les rudiments du swing et de construction GUI. essayer de construire une interface utilisateur graphique Java où il faut un équilibre double, première finale, et quand un bouton est enfoncé, ajoute une double finale 5% d'intérêt pour elle. Je continue à obtenir l'erreur

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at interest.Balance$ButtonListener.actionPerformed(Balance.java:30)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
    at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
    at java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
    at java.desktop/javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:279)
    at java.desktop/java.awt.Component.processMouseEvent(Component.java:6636)
    at java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
    at java.desktop/java.awt.Component.processEvent(Component.java:6401)
    at java.desktop/java.awt.Container.processEvent(Container.java:2263)
    at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5012)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
    at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
    at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
    at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
    at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
    at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762)
    at java.desktop/java.awt.Component.dispatchEvent(Component.java:4844)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
    at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90

et ne semblent pas savoir où je suis allé mal à cela. Je n'ai pas nulls et je n'ai aucune erreur dans Eclipse. J'ai cherché jusqu'à ce problème, mais il semble varier au cas par cas. Je pense que le problème se produit lorsque je tente et le texte ensemble de la JLabel, mais même alors je ne suis pas sûr de savoir comment je résoudre ce problème.

voici mon code, j'ai utilisé deux classes différentes pour mon interface graphique, BalancePane.java et Balance.java

import javax.swing.JFrame;

public class BalancePane {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        Balance panel = new Balance();

        frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE);    
        frame.getContentPane().add(panel);  
        frame.setSize(300, 500);    
        frame.pack();
        frame.setVisible(true);
    }
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Balance extends JPanel {
    private JTextField balanceTextField;
    private final double INITIAL_BALANCE = 1000;
    private final double INTEREST_RATE = 5; 

    public Balance() {
        JButton interestButton = new JButton("Add interest");
        JTextField balanceTextField = new JTextField(10);

        interestButton.addActionListener(new ButtonListener());

        add(interestButton);
        add(balanceTextField);

        balanceTextField.setText(Double.toString(INITIAL_BALANCE));
    }

    private class ButtonListener implements ActionListener {
        public void actionPerformed(ActionEvent event) {

            double balance = INITIAL_BALANCE * (INTEREST_RATE)/100;
            balanceTextField.setText(Double.toString(balance));
        }
    }
}

c0der:

Vous déclarez 2 les JTextFieldvariables du même nom, l' initialisation et l' un d'eux en utilisant l'autre:

entrez la description d'image ici

Pour résoudre ce problème il suffit de changer JTextField balanceTextField = new JTextField(10);debalanceTextField = new JTextField(10);

Je suppose que tu aimes

Origine http://43.154.161.224:23101/article/api/json?id=359796&siteId=1
conseillé
Classement