java - 为什么我在 Java BasicTableUI$Handler.setValueIsAdjusting 中不断收到 NullPointerException?

标签 java swing exception

我的应用程序中不断出现此 NPE,而且我似乎无法摆脱它,因为它没有出现在我的任何源代码中。正如您从堆栈跟踪中看到的那样,它没有发生在我的代码中,而是发生在 Swing plaf 中。你们中有没有人遇到过这个问题,也许知道这里发生了什么?

   11:28:23,273 [AWT-EventQueue-0] ERROR [is.althingi.styran.utlit.styran.StyranImpl]
   - uncaughtException
   java.lang.NullPointerException
    at javax.swing.plaf.basic.BasicTableUI$Handler.setValueIsAdjusting(Unknown Source)
    at javax.swing.plaf.basic.BasicTableUI$Handler.mouseReleased(Unknown Source)
    at java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
    at java.awt.Component.processMouseEvent(Unknown Source)
    at javax.swing.JComponent.processMouseEvent(Unknown Source)
    at java.awt.Component.processEvent(Unknown Source)
    at java.awt.Container.processEvent(Unknown Source)
    at java.awt.Component.dispatchEventImpl(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(Unknown Source)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
    at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
    at java.awt.Container.dispatchEventImpl(Unknown Source)
    at java.awt.Window.dispatchEventImpl(Unknown Source)
    at java.awt.Component.dispatchEvent(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)

最佳答案

我设法解决了这个问题!

问题是我向我的 JTable 添加了一个 ListSelectionListener;在我的监听器的 valueChanged 方法中,我随后调用了 scrollRectToVisible,然后调用了 updateUI,这导致了我的异常。

我所做的是在 updateUI 调用周围添加 invokeLater 并且不再有异常!

像这样:

  SwingUtilities.invokeLater(new Runnable() {
    public void run() {
      updateUI();
    }
  });

既然我有了问题的“答案”(虽然我不确定我是否仍然理解为什么 invokeLater 有帮助?),但我认为我的问题还不够好。我没有提供足够的关于我的问题的信息,任何人都无法回答这个问题。在我问之前我应该​​更多地研究这个问题吗?我不知道。

也许我提供对我有帮助的解决方案就足够了!

关于java - 为什么我在 Java BasicTableUI$Handler.setValueIsAdjusting 中不断收到 NullPointerException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/340286/

相关文章:

java - 来自数据库的 Jsf2 primefaces 菜单栏

java - 用于 float 的 JFormattedTextField

java - 无法从SwingWorker类获取JProgressBar进行更新

java - 重新抛出 RuntimeException 的子类

java - 为什么我的 Java JDBC 到 Firebird 数据库的连接不会断开?

java - 如何将具有状态的对象置于版本控制之下?这还有道理吗?

java - 为什么他们在这个 Java GridBagLayoutDemo 示例中声明这些静态变量?

c++ - 如何从 C++ 引发将触发脚本异常处理程序的异常

javax.net.ssl.SSLException illegal_parameter bouncycaSTLe 相关?

java - 我的情况应该使用哪种舍入方法?