JavaAWT eventQueue线程正在引发未知的NullPointerException

JavaAWT eventQueue线程正在引发未知的NullPointerException,java,swing,nullpointerexception,jframe,awt,Java,Swing,Nullpointerexception,Jframe,Awt,这只发生在大约1/10次运行时,我不确定为什么会发生异常。我知道异常并没有给我一个错误 这是我扩展JFrame的类 private StyledDocument debug; private JScrollPane debugSP; private StyledDocument chat; private JScrollPane chatSP; public DapBotGUI() { super("JFrame"); s

这只发生在大约1/10次运行时,我不确定为什么会发生异常。我知道异常并没有给我一个错误

这是我扩展JFrame的类

private StyledDocument debug;
    private JScrollPane debugSP;
    private StyledDocument chat;
    private JScrollPane chatSP;

    public DapBotGUI()
    {
        super("JFrame");
        setSize(600, 400);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setLayout(null);

        JTextPane debug = new JTextPane();

        debugSP = new JScrollPane(debug);
        debugSP.setBounds(0, 0, this.getWidth() - 20, this.getHeight() / 2 - 20);
        debugSP.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        debugSP.setAutoscrolls(true);

        JTextPane chat = new JTextPane();

        chatSP = new JScrollPane(chat);
        chatSP.setBounds(0, this.getHeight() / 2 - 20, this.getWidth() - 20, this.getHeight() / 2 - 20);
        chatSP.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
        chatSP.setAutoscrolls(true);

        this.getContentPane().add(debugSP);
        this.getContentPane().add(chatSP);
        this.setVisible(true);

        this.debug = debug.getStyledDocument();
        this.chat = chat.getStyledDocument();
    }

    public void debug(String message)
    {
        debug(message, Color.BLACK);
    }

    public synchronized void debug(String message, Color color)
    {
        SimpleAttributeSet formatter = new SimpleAttributeSet();
        StyleConstants.setForeground(formatter, color);
        StyleConstants.setBackground(formatter, Color.WHITE);

        try
        {
            debug.insertString(debug.getLength(), message + System.lineSeparator(), formatter);

            JScrollBar vertical = debugSP.getVerticalScrollBar();
            vertical.setValue(vertical.getMaximum());
        }
        catch (BadLocationException e)
        {
            e.printStackTrace();
        }
    }

    public void chatMessage(String message)
    {
        chatMessage(message, Color.BLACK);
    }

    public synchronized void chatMessage(String message, Color color)
    {
        SimpleAttributeSet formatter = new SimpleAttributeSet();
        StyleConstants.setForeground(formatter, color);
        StyleConstants.setBackground(formatter, Color.WHITE);
        try
        {
            chat.insertString(chat.getLength(), message + System.lineSeparator(), formatter);

            JScrollBar vertical = chatSP.getVerticalScrollBar();
            vertical.setValue(vertical.getMaximum());
        }
        catch (BadLocationException e)
        {
            e.printStackTrace();
        }
    }
然后这里是错误,但从我所看到的,我的代码没有直接的问题导致这个错误(我可以看到)


你能展示一下主要的方法吗?如果代码是可运行的,则会更容易。主要方法是DapBotGui=newdapbotgui();这没有多大帮助,你应该知道问题何时发生,因为我不知道你的目标,你声称只有1/10的跑步会出错。如果我们不能重现错误,那就很难帮助你了,这就是我不明白的,没有一个特定的实例可以抛出错误,上面的代码可以自己运行,它仍然在一个看似随机的实例中抛出错误。只要在屏幕上打开JFrame,就会随机抛出错误。为了更快地获得更好的帮助,请发布一个(最简单、完整、经过测试且可读的示例)。
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.text.FlowView$FlowStrategy.layoutRow(Unknown Source)
    at javax.swing.text.FlowView$FlowStrategy.layout(Unknown Source)
    at javax.swing.text.FlowView.layout(Unknown Source)
    at javax.swing.text.BoxView.setSize(Unknown Source)
    at javax.swing.text.BoxView.updateChildSizes(Unknown Source)
    at javax.swing.text.BoxView.setSpanOnAxis(Unknown Source)
    at javax.swing.text.BoxView.layout(Unknown Source)
    at javax.swing.text.BoxView.setSize(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI$RootView.setSize(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI$RootView.paint(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI.paintSafely(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI.paint(Unknown Source)
    at javax.swing.plaf.basic.BasicTextUI.update(Unknown Source)
    at javax.swing.JComponent.paintComponent(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JViewport.paint(Unknown Source)
    at javax.swing.JComponent.paintChildren(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    at javax.swing.JComponent.paintToOffscreen(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
    at javax.swing.RepaintManager.paint(Unknown Source)
    at javax.swing.JComponent._paintImmediately(Unknown Source)
    at javax.swing.JComponent.paintImmediately(Unknown Source)
    at javax.swing.RepaintManager$3.run(Unknown Source)
    at javax.swing.RepaintManager$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.prePaintDirtyRegions(Unknown Source)
    at javax.swing.RepaintManager.access$1100(Unknown Source)
    at javax.swing.RepaintManager$ProcessingRunnable.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$200(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(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)