import java.awt.EventQueue; import java.awt.Frame; import java.awt.Graphics; import java.awt.Label; import java.awt.peer.LabelPeer; public final class LabelRepaint extends Label { public static void main(final String[] args) { while (true) { final Frame frame = new Frame(); frame.setSize(300, 300); frame.setLocationRelativeTo(null); LabelRepaint label = new LabelRepaint(); frame.add(label); frame.setVisible(true); sleep(); label.test(); frame.dispose(); } } private static void sleep() { try { Thread.sleep(2000); } catch (InterruptedException ignored) { } } @Override public void paint(final Graphics g) { super.paint(g); if (!EventQueue.isDispatchThread()) { throw new RuntimeException("Wrong thread"); } test(); } void test() { setAlignment(getAlignment()); ((LabelPeer) getPeer()).setAlignment(getAlignment()); setText(""); setText(null); setText(getText()); ((LabelPeer) getPeer()).setText(""); ((LabelPeer) getPeer()).setText(null); ((LabelPeer) getPeer()).setText(getText()); setFont(null); setFont(getFont()); getPeer().setFont(null); getPeer().setFont(getFont()); setBackground(null); setBackground(getBackground()); getPeer().setBackground(null); getPeer().setBackground(getBackground()); setForeground(null); setForeground(getForeground()); getPeer().setForeground(null); getPeer().setForeground(getForeground()); setEnabled(isEnabled()); } }