RFR: 8332431: NullPointerException in JTable of SwingSet2

Abhishek Kumar abhiscxk at openjdk.org
Mon May 27 09:35:04 UTC 2024


On Fri, 24 May 2024 05:03:07 GMT, Prasanta Sadhukhan <psadhukhan at openjdk.org> wrote:

> Issue is observed in JTable demo in SwingSet2 whereby if we set the focus on a table cell (or click on a table cell) and Press Ctrl+F1 (show/hide tooltip) on a cell of JTable then NullpointerException is seen
> 
>> Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot invoke "java.awt.event.MouseEvent.getLocationOnScreen()" because "this.mouseEvent" is null 
> 
> This is because ToolTip associated with JTable demo button at top of SwingSet2 has MouseMotion Listener which causes [mouseEvent to be null](https://github.com/openjdk/jdk/blame/da3001daf79bf943d6194d9fd60250d519b9680d/src/java.desktop/share/classes/javax/swing/ToolTipManager.java#L573) when mouse exits the demo button area and enter the table cells area where show/hide tooltip causes showTipWindow to be called trying to access `mouseEvent` which is null.
> Fix is made to check for null in this kind of cases..No regression test is added as it can be checked easily with SwingSet2..

src/java.desktop/share/classes/javax/swing/ToolTipManager.java line 273:

> 271:             GraphicsConfiguration gc = getDrawingGC(toFind);
> 272:             if (gc == null) {
> 273:                 if (mouseEvent != null) {

In the same method **showTipWindow**, mouseEvent's _getLocationOnScreen_ method is accessed at [L268](https://github.com/openjdk/jdk/blame/da3001daf79bf943d6194d9fd60250d519b9680d/src/java.desktop/share/classes/javax/swing/ToolTipManager.java#L268C13-L268C13) and mouseEvent's _getX_ and _getY_ methods are accessed at [L304](https://github.com/openjdk/jdk/blame/da3001daf79bf943d6194d9fd60250d519b9680d/src/java.desktop/share/classes/javax/swing/ToolTipManager.java#L304), guess we should guard them as well with null check.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/19379#discussion_r1615784054


More information about the client-libs-dev mailing list