United StatesChange Country, Oracle Worldwide Web Sites Communities I am a... I want to...
Bug ID: JDK-7055065 Regression : JDK 7 : NullPointerException when sorting JTable with empty cell
JDK-7055065 : Regression : JDK 7 : NullPointerException when sorting JTable with empty cell

Details
Type:
Bug
Submit Date:
2011-06-15
Status:
Resolved
Updated Date:
2013-06-26
Project Name:
JDK
Resolved Date:
2012-05-09
Component:
client-libs
OS:
generic
Sub-Component:
javax.swing
CPU:
generic
Priority:
P4
Resolution:
Fixed
Affected Versions:
7
Fixed Versions:

Related Reports
Backport:
Backport:

Sub Tasks

Description
SYNOPSIS
--------
NullPointerException when sorting JTable with empty cell

OPERATING SYSTEM
----------------
Reported on RHEL5.1
Reproducible on Windows.
Likely platform independent.

FULL JDK VERSION
----------------
JDK 7 (tested with b144)
Not reproducible with Java 6

REPRODUCTION INSTRUCTIONS
-------------------------
1. Launch SwingSet2 with jar as follows:
    java -jar %JAVA_HOME%/demo/jfc/SwingSet2/SwingSet2.jar

2. Click JTableDemo Tab and double click on a cell in the "Favorite
 Number" column and delete the value.

3. Click on the column headers to sort the table.

Expected result:
No Exceptions should be thrown.

Observed result:
The following NullPointerException stack trace is printed on the console:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
      at javax.swing.JTable.columnMoved(JTable.java:4578)
      at javax.swing.table.DefaultTableColumnModel.fireColumnMoved(DefaultTableColumnModel.java:580)
      at javax.swing.table.DefaultTableColumnModel.moveColumn(DefaultTableColumnModel.java:190)
      at javax.swing.plaf.basic.BasicTableHeaderUI$MouseInputHandler.setDraggedDistance(BasicTableHeaderUI.java:293)
      at javax.swing.plaf.basic.BasicTableHeaderUI$MouseInputHandler.mouseReleased(BasicTableHeaderUI.java:263)
      at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
      at java.awt.Component.processMouseEvent(Component.java:6504)
      at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
      at java.awt.Component.processEvent(Component.java:6269)
      at java.awt.Container.processEvent(Container.java:2229)
      at java.awt.Component.dispatchEventImpl(Component.java:4860)
      at java.awt.Container.dispatchEventImpl(Container.java:2287)
      at java.awt.Component.dispatchEvent(Component.java:4686)
      at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
      at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
      at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
      at java.awt.Container.dispatchEventImpl(Container.java:2273)
      at java.awt.Window.dispatchEventImpl(Window.java:2713)
      at java.awt.Component.dispatchEvent(Component.java:4686)
      at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)
      at java.awt.EventQueue.access$000(EventQueue.java:101)
      at java.awt.EventQueue$3.run(EventQueue.java:666)
      at java.awt.EventQueue$3.run(EventQueue.java:664)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
      at java.awt.EventQueue$4.run(EventQueue.java:680)
      at java.awt.EventQueue$4.run(EventQueue.java:678)
      at java.security.AccessController.doPrivileged(Native Method)
      at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
      at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)
      at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)
      at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
      at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
      at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
      at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

                                    

Comments
EVALUATION

transferring to classes_swing.
                                     
2011-06-16
EVALUATION

The problem is in the SwingSet2 demo. I can't reproduce the same NPE, but I get another one:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
	at TableDemo$16.getColumnClass(TableDemo.java:552)
	at javax.swing.JTable.getColumnClass(JTable.java:2667)
	at javax.swing.JTable.getCellRenderer(JTable.java:5671)
	at javax.swing.plaf.basic.BasicTableUI.paintCell(BasicTableUI.java:2071)
	at javax.swing.plaf.basic.BasicTableUI.paintCells(BasicTableUI.java:1974)
	at javax.swing.plaf.basic.BasicTableUI.paint(BasicTableUI.java:1770)
	at javax.swing.plaf.ComponentUI.update(ComponentUI.java:143)

The following code doesn't take into account that the JTable can be edited:
  public Class getColumnClass(int c) {return getValueAt(0, c).getClass();}
                                     
2011-06-16



Hardware and Software, Engineered to Work Together