On Wed, 15 Apr 2026 23:20:00 GMT, Alexander Zuev <[email protected]> wrote:

> Make caret color closer to the background color so it does appear as disabled 
> caret.
> 
> Here is the comparison of default caret and the caret after the fix is 
> applied:
> Default white background: <img width="126" height="36" alt="white_editable" 
> src="https://github.com/user-attachments/assets/35620f59-8ed6-40f4-8b52-00757acf3efc";
>  />
> After fix white background: <img width="124" height="38" 
> alt="white_noneditable" 
> src="https://github.com/user-attachments/assets/10a5bd08-ebc2-42e5-99e1-4a048a323666";
>  />
> Default red background: <img width="140" height="52" alt="red_editable" 
> src="https://github.com/user-attachments/assets/f0c327a4-aee3-4802-98ed-915e314be36c";
>  />
> After fix with red background: <img width="130" height="36" 
> alt="red_noneditable" 
> src="https://github.com/user-attachments/assets/c3baaf41-6a67-4be2-98c0-d1e260fc53ae";
>  />
> 
> 
> 
> ---------
> - [x] I confirm that I make this contribution in accordance with the [OpenJDK 
> Interim AI Policy](https://openjdk.org/legal/ai).

I see an NPE when I focus a disabled text field with the 
`javax.swing.plaf.nimbus.NimbusLookAndFeel LaF` enabled.


Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException: Cannot 
invoke "java.awt.Color.getRed()" because "caretColor" is null
        at 
java.desktop/javax.swing.text.DefaultCaret.paint(DefaultCaret.java:699)
        at 
java.desktop/javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:774)
        at 
java.desktop/javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:927)
        at 
java.desktop/javax.swing.plaf.synth.SynthTextFieldUI.paint(SynthTextFieldUI.java:201)
        at 
java.desktop/javax.swing.plaf.synth.SynthTextFieldUI.update(SynthTextFieldUI.java:185)
        at 
java.desktop/javax.swing.JComponent.paintComponent(JComponent.java:838)
        at java.desktop/javax.swing.JComponent.paint(JComponent.java:1114)
        at 
java.desktop/javax.swing.JComponent.paintChildren(JComponent.java:947)
        at java.desktop/javax.swing.JComponent.paint(JComponent.java:1123)
        at 
java.desktop/javax.swing.JComponent.paintToOffscreen(JComponent.java:5283)
        at 
java.desktop/javax.swing.BufferStrategyPaintManager.paint(BufferStrategyPaintManager.java:255)
        at 
java.desktop/javax.swing.RepaintManager.paint(RepaintManager.java:1240)
        at 
java.desktop/javax.swing.JComponent._paintImmediately(JComponent.java:5231)
        at 
java.desktop/javax.swing.JComponent.paintImmediately(JComponent.java:5041)
        at 
java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:786)
        at 
java.desktop/javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:749)
        at 
java.desktop/javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:699)
        at 
java.desktop/javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1793)
        at 
java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:323)
        at 
java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:714)
        at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
        at 
java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
        at 
java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
        at 
java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
        at 
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
        at 
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
        at 
java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

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

PR Comment: https://git.openjdk.org/jdk/pull/30758#issuecomment-4289349226

Reply via email to