Question

Je veux juste imprimer l'option sélectionnée dans la boîte combinée, dans un champ de texte. Veuillez expliquer ce qui ne va pas parce que je dois le terminer et l'expliquer en classe. Toute aide serait grandement appréciée. Merci d'avance.


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

public class App3 extends JFrame implements ActionListener
{
    private JPanel boxPanel,textPanel;
    private JLabel selectName,selectedName;
    private JComboBox nameCombo;
    private JTextField valueOfSelectedName;
    private Container c;

    public App3()
    {
        super("Combo example");
        setup();
        setSize(200,200);
        setLocation(50,50);
        show();
    }

    public void setup()
    {
        c = getContentPane();

        boxPanel = new JPanel();
        c.add(boxPanel,BorderLayout.NORTH);

        selectName = new JLabel("Select Name : ");
        selectedName = new JLabel("The selected Name : ");

        String[] names = {"Ramila","Hashan","Shaad","Gus","Mahasen","Hasaru","Shabba"};
        nameCombo = new JComboBox(names);
        nameCombo.addActionListener(this);

        valueOfSelectedName = new JTextField(10);

        boxPanel.add(selectName);
        boxPanel.add(nameCombo);

        c.add(textPanel,BorderLayout.CENTER);

        textPanel.add(selectedName);
        textPanel.add(valueOfSelectedName);

    }

    public void actionPerformed(ActionEvent e) 
    {
        JComboBox nameCombo = (JComboBox)e.getSource();
        String newSelection = (String)nameCombo.getSelectedItem();
        valueOfSelectedName.setText(newSelection);
    }

    public static void main(String args[])
    {
        App3 a = new App3();
    }
}

Je n'obtiens aucune erreur de temps de compilation, j'obtiens ces erreurs lorsque je l'exécute.

Exception in thread "main" java.lang.NullPointerException
    at java.awt.Container.addImpl(Container.java:1041)
    at java.awt.Container.add(Container.java:927)
    at App3.setup(App3.java:42)
    at App3.(App3.java:16)
    at App3.main(App3.java:58)

Process completed.
Était-ce utile?

La solution

private JPanel boxPanel,textPanel;
...
textPanel = new JPanel();

Vous n'avez pas créé l'objet JPanel, par conséquent, TextPanel pointe vers Null, c'est pourquoi l'exception est lancée. Créez l'objet et tout devrait bien fonctionner

Autres conseils

TextPanel est nul lorsque vous essayez de l'ajouter au volet de contenu:

c.add(textPanel, BorderLayout.CENTER);
import java.awt.*;

import java.awt.event.*;

import javax.swing.*;


public class App3 extends JFrame implements ActionListener
{
    private JPanel boxPanel,textPanel;

    private JLabel selectName,selectedName;

    private JComboBox nameCombo;

    private JTextField valueOfSelectedName;

    private Container c;


    public App3()
    {
        super("Combo example");
        setup();
        setSize(200,200);
        setLocation(50,50);
        show();
    }

    public void setup()
    {
        c = getContentPane();

        boxPanel = new JPanel();
        c.add(boxPanel,BorderLayout.NORTH);

        selectName = new JLabel("Select Name : ");
        selectedName = new JLabel("The selected Name : ");

        String[] names = {"Ramila","Hashan","Shaad","Gus","Mahasen","Hasaru","Shabba"};
        nameCombo = new JComboBox(names);
        nameCombo.addActionListener(this);

        valueOfSelectedName = new JTextField(10);

        boxPanel.add(selectName);
        boxPanel.add(nameCombo);

        textPanel = new JPanel(); // panel is not init that why its give error

        c.add(textPanel,BorderLayout.CENTER);

        textPanel.add(selectedName);
        textPanel.add(valueOfSelectedName);

    }

    public void actionPerformed(ActionEvent e) 
    {
        JComboBox nameCombo = (JComboBox)e.getSource();
        String newSelection = (String)nameCombo.getSelectedItem();
        valueOfSelectedName.setText(newSelection);
    }

    public static void main(String args[])
    {
        App3 a = new App3();
    }

}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top