Почему я получаю исключение NullPointerException в Java BasicTableUI $ Handler.setValueIsAdjusting? - PullRequest
1 голос
/ 04 декабря 2008

Я продолжаю получать этот NPE в своем приложении, и я не могу избавиться от него, потому что он не отображается ни в одном из моего исходного кода. Как вы можете видеть из трассировки стека, это происходит не в моем коде, а в плафте Swing. Кто-нибудь из вас имел эту проблему и, возможно, выяснил, что здесь происходит?

   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)

Ответы [ 2 ]

8 голосов
/ 21 января 2009

Мне удалось обойти проблему!

Дело в том, что я добавляю ListSelectionListener к своему JTable; в методе valueChanged моего слушателя я затем вызываю scrollRectToVisible, а затем updateUI, что приводит к моему исключению.

Что я сделал, так это добавил invokeLater к вызову updateUI и , исключений больше нет !

Как это:

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

Теперь, когда у меня есть «ответ» на мой вопрос (хотя я не уверен, что все еще понимаю, почему invokeLater помог?), Я думаю, что мой вопрос был недостаточно хорош. Я не предоставил достаточно информации о моей проблеме, чтобы кто-нибудь мог ответить на вопрос. Должен ли я изучить проблему больше, прежде чем я спросил? Я не знаю.

Может быть, этого достаточно, чтобы я предоставил решение, которое мне помогло!

2 голосов
/ 04 декабря 2008

У меня никогда не было этой конкретной проблемы, но когда я получаю такие "скрытые" ошибки, я всегда заканчиваю тем, что смотрю оригинальный исходный код и пытаюсь выяснить проблему ...

Из этого источника вы можете увидеть функцию, которая генерирует исключение:

private void setValueIsAdjusting(boolean flag) {
    table.getSelectionModel().setValueIsAdjusting(flag);
    table.getColumnModel().getSelectionModel().
    setValueIsAdjusting(flag);
}

Можете ли вы подтвердить, если ваша таблица выбора модели; модель колонны; Модель выбора столбца не пуста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...