1

テキストフィールドを表示するスイングアプリケーションを実行したいだけです。以下は、生成された例外を実行したときのコードです。

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at textf.<init>(textf.java:10)
at textf$1.run(textf.java:35)
at java.awt.event.InvocationEvent.dispatch(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)

何をすべきか助けてください。

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

class textf{
JTextField tf;
JFrame j;
textf(){
    new JFrame("TextField Demo");
    j.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    j.setSize(400,200);
    j.setLayout(new FlowLayout());
    tf=new JTextField("press<Enter>",20);

    j.add(tf);
    j.setVisible(true);
}

public static void main(String s[]) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            new textf();
        }
    });
}
}
4

1 に答える 1

3

に値を割り当てることはないjため、デフォルト値はnullです。j.setDefaultCloseOperation(...)したがって、コンストラクター ( ) の 2 行目で逆参照しようとすると、 NullPointerException. これは、JTextField...に到達する前であることに注意してください。

コンストラクターの最初の行を次のように変更するだけです。

j = new JFrame("TextField Demo");

その後、コードのインデントとクラスと変数の命名の両方を整理すると、より保守しやすいコードになります:)

于 2012-12-16T09:07:45.917 に答える