Есть прозрачное окно.
package ru.alexp.tools;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.JFrame;
public class InputFrame extends JFrame {
    private static InputFrame instance;
    private final ConsoleInputPanel inputPanel = new ConsoleInputPanel();
    public InputFrame() {
        final Dimension dim = getToolkit().getScreenSize();
        setSize(500, 80);
        setLocation(dim.width - getWidth() - 50, dim.height - getHeight() - 200);
        setUndecorated(true);
        setBackground(new Color(255, 255, 255, 0));
        setType(Type.UTILITY);
        add(inputPanel);
        addFocusListener(new FocusAdapter() {
            @Override
            public void focusGained(FocusEvent e) {
                repaint();
            }
            @Override
            public void focusLost(FocusEvent e) {
                repaint();
            }
        });
    }
    public static InputFrame getInputFrame() {
        if (instance == null) {
            instance = new InputFrame();
        }
        return instance;
    }
}
В нём нахордится панель на которой отрисовывается стилизованный JTextField.
Для перерисовки содержимого JTextField я перезаписываю paintComponent(Graphics g).
protected void paintComponent(Graphics g) {
    Graphics2D gg = (Graphics2D) g;
    gg.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    gg.setColor(Color.WHITE);
    gg.setFont(font);
    gg.drawString(getText(), 50, 50);
}
При первой отрисовки текста всё отлично работает. Но при при отрисовки другого текста у меня на экране показывается наложение этих отрисованных строк.

(здесь было написано сначала "12345" затем "5432111")
Сразу были найдены возможные решения:
	- Перед отрисовкой очищать область через clearRect() -> получил белую область под элементом
 
- Перерисовывать содержимое полностью содержимое используя repaint() в paintComponent() -> получил бесконечную рекурсию (да, знаю. глупо. но так InputFrame.getInputFrame().repaint() кое как но работало.)
 
- реализовать через super.paintComponent() -> белый фон; чтобы убрать белый фон setBackground(new Color(255, 255, 255, 0)) -> опять наложение отрисованных строк
 
Помогите решить эту проблему и подскажите как правильно реализовать остальные визуальные функции JTextField такие как: мигание курсора и выделение символов.
Заранее спасибо.