【问题标题】:JTextField not working properlyJTextField 无法正常工作
【发布时间】:2012-12-16 09:06:33
【问题描述】:

我只想运行一个显示文本字段的摇摆应用程序。 以下是运行时生成的异常代码:

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

【问题讨论】:

    标签: java swing initialization jframe local-variables


    【解决方案1】:

    您永远不会为j 分配值,因此它的默认值是null。当您尝试在构造函数 (j.setDefaultCloseOperation(...)) 的第二行中取消引用它时,会抛出 NullPointerException。请注意,这是在您到达 JTextField...

    之前

    只需将构造函数的第一行更改为:

    j = new JFrame("TextField Demo");
    

    之后,理清代码的缩进以及类和变量的命名,这样你就可以得到更易于维护的代码:)

    【讨论】:

    • 非常感谢。你能说出一个全球流行的 Java 桌面应用程序的名字吗?它有什么范围吗??
    • @coder005:我看不出这与这个问题有什么关系。 Java 在服务器端和移动设备 (Android) 中使用更为广泛,但我敢肯定也有一些桌面应用程序相当受欢迎。
    • @JBNizet:我考虑过这一点,但我觉得 IDE 不应该算作平台的桌面应用程序。如果你明白我的意思,这有点裙带关系的味道。
    猜你喜欢
    • 2021-05-04
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 1970-01-01
    • 2016-09-01
    • 2012-07-11
    • 2018-04-08
    相关资源
    最近更新 更多