!7 p-substance { JTextField tf1 = jtextfield(); JTextField tf2 = jtextfield(); for (JTextField tf : ll(tf1, tf2)) tf.setCaret(new HighlightCaret); showFrame(vgrid(tf1, tf2)); } sclass HighlightCaret extends DefaultCaret { private static final Highlighter.HighlightPainter unfocusedPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.RED); private static final Highlighter.HighlightPainter focusedPainter = new DefaultHighlighter.DefaultHighlightPainter(Color.YELLOW); private static final long serialVersionUID = 1L; private boolean isFocused; @Override protected Highlighter.HighlightPainter getSelectionPainter() { setBlinkRate(500); // otherwise is disabled, stopped return isFocused ? focusedPainter/*super.getSelectionPainter()*/ : unfocusedPainter; } @Override public void setSelectionVisible(boolean hasFocus) { if (hasFocus != isFocused) { isFocused = hasFocus; super.setSelectionVisible(false); super.setSelectionVisible(true); } } }