0

コンボボックスで選択したオプションをテキストフィールドに出力したいだけです。私はそれを完成させてクラスで説明しなければならないので、何が間違っているのか説明してください. どんな助けでも大歓迎です。前もって感謝します。


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

コンパイル時エラーは発生しません。実行時にこれらのエラーが発生します。

スレッド「メイン」での例外 java.lang.NullPointerException
    java.awt.Container.addImpl (Container.java:1041) で
    java.awt.Container.add(Container.java:927) で
    App3.setup (App3.java:42) で
    App3 で (App3.java:16)
    App3.main (App3.java:58) で

プロセスが完了しました。
4

3 に答える 3

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

したがって、JPanelオブジェクトを作成していないため、textPanelはnullを指しています。これが、例外がスローされる理由です。オブジェクトを作成すると、すべてが正常に機能するはずです

于 2010-10-31T08:59:57.643 に答える
0
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();
    }

}
于 2011-04-22T11:39:08.283 に答える
0

コンテンツ ペインに追加しようとすると、textPanel は null です。

c.add(textPanel, BorderLayout.CENTER);
于 2010-10-31T08:25:05.840 に答える