On Wed, 11 Jun 2025 12:37:25 GMT, Prasanta Sadhukhan <[email protected]>
wrote:
> Something like this
>
> ```
> ImageIcon icon = new ImageIcon();
> Image image =
> Toolkit.getDefaultToolkit().createImage("onepixel.gif");
> icon.setImage(image);
> if (icon.getImageLoadStatus == MediaTracker.ABORTED) {
> ImageIcon newIcon = new ImageIcon();
> }
> ```
>
> in this case wont mediaTrackerId starts from 0 again for "newIcon"?
No, it won't. Why will it?
`mediaTrackerId` is a static field, that is its value grows with each image
loaded by a new instance of `ImageIcon`, and the value of `mediaTrackerId` is
never reset. That's exactly the problem described in the
[JDK-8055461](https://bugs.openjdk.org/browse/JDK-8055461) bug report.
https://github.com/openjdk/jdk/blob/bf7d40d0486b7b4e4820bb5d08a63c446ea3291d/src/java.desktop/share/classes/javax/swing/ImageIcon.java#L129
https://github.com/openjdk/jdk/blob/bf7d40d0486b7b4e4820bb5d08a63c446ea3291d/src/java.desktop/share/classes/javax/swing/ImageIcon.java#L322-L326
With the change that you propose, it will be impossible to load images with
`ImageIcon` once the value of `mediaTrackerId` reaches `Integer.MAX_VALUE`.
-------------
PR Comment: https://git.openjdk.org/jdk/pull/25666#issuecomment-2962554490