【问题标题】:Java Swing Null Pointer Exception in Netbeans IDENetbeans IDE 中的 Java Swing Null 指针异常
【发布时间】:2018-07-10 21:19:59
【问题描述】:

我对 Java 还是很陌生,我已经开始使用 swing 使用 netbeans java IDE 8.2 进行一个简单的 GUI 项目,并且遇到了空指针异常。

我已将大部分代码删除到底部,以便尝试找出问题出在哪里,但我仍然遇到仅运行这些代码行的异常。

package finalmodel;
import javax.swing.*;


public class FinalModel extends JFrame {

    public static void main (String[] args) {

        new FinalModel();
    }

    public FinalModel () {

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);

    }

}

应用程序运行良好,据我所知,异常不会影响功能(弹出一个窗口,可以从上面的代码中成功关闭),但在窗口关闭时会抛出异常。

IDE 给我的堆栈跟踪是

java.lang.NullPointerException: peer
    at sun.awt.windows.WInputMethod.openCandidateWindow(Native Method)
    at sun.awt.windows.WInputMethod.access$400(WInputMethod.java:45)
    at sun.awt.windows.WInputMethod$1.run(WInputMethod.java:602)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:733)
    at java.awt.EventQueue$4.run(EventQueue.java:731)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:730)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159) [catch]
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)    
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)    
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)    
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)    
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Version Info

【问题讨论】:

  • 看起来更像是 NetBeans 的问题而不是 Swing...尝试将代码复制粘贴到 非 GUI 项目中,看看它是否仍然是 NPE。
  • 为了澄清,你用的是什么版本的java?我想尝试在我的系统上复制它。
  • @EvOlaNdLuPiZ 我添加了一张包含所有版本信息的图片。
  • @Matthieu 对不起,如果这是一个愚蠢的问题,但我将如何在非 GUI 项目中运行此 GUI 相关代码?
  • @Omar,Java 就是 Java :) 只需创建一个“常规”项目并让您的类扩展 JFrame。您将不会使用可能会妨碍您的 NetBeans WYSIWYG 编辑器。

标签: java swing nullpointerexception


【解决方案1】:

您的示例非常少。它可能缺少一些属性。试试这个:

package finalmodel;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class FinalModel extends JFrame {
 public FinalModel () {
   setTitle("setTitle()");
   setSize(300, 200);
   setLocationRelativeTo(null);
   setDefaultCloseOperation(EXIT_ON_CLOSE);
 }
 public static void main(String[] args) {
   FinalModel fm = new FinalModel ();
   fm.setVisible(true);
 }
}

这里有一篇关于jframe的好文章,供练习jframes

【讨论】:

  • 感谢您的回复。我尝试添加更多属性,甚至复制粘贴您回复的代码,但我仍然得到相同的行为。弹出一个功能窗口,关闭时抛出异常。
  • 您显示的代码对我来说运行良好,没有抛出任何异常。您确定您正在执行该代码,而不是以前的版本吗? (注意:您应该在 EventDispatchThread 上执行 GUI 部分,而不是在主线程上)。
  • 我想建议添加一个 WindowListener,reference,这对调试很有用。特别是方法 windowClosing() windowClosed()
  • @FredK 是的,我什至完全创建了一个新项目并将此代码放入其中,但仍然得到相同的结果。正如我之前提到的,代码似乎运行良好并且窗口按预期弹出,只有在程序关闭时才会抛出异常。由于它似乎对您来说运行良好,这可能只是上面其他人提到的 netbeans 的问题吗?
  • @Omar 这很简单但值得一试,尝试重新安装 netbeans。让我们知道结果是什么。
【解决方案2】:

Netbeans 错误!使用未更新的版本或类似的东西重新安装 Netbeans。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多