This Java Swing tip illustrates a method of dynamically updating the appearance of a component. The tip uses the revalidate() method to dynamically update the appearance of a component. This example changes the size of a button's font on the fly.

 import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class RevalidateExample extends JFrame {
    
    public RevalidateExample() {
        
        super("Revalidation Demo");
        setSize(300,150);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        // Create a single button
        Font font = new Font("Dialog", Font.PLAIN, 10);
        final JButton b = new JButton("Add");
        b.setFont(font);
        
        Container c = getContentPane();
        c.setLayout(new FlowLayout());
        c.add(b);
        
        // Increase the size of the button's font each time it's clicked
        b.addActionListener(new ActionListener() {
            int size = 10;
            
            public void actionPerformed(ActionEvent ev) {
                b.setFont(new Font("Dialog", Font.PLAIN, ++size));
    
    // invalidates the button & validates its root pane
                b.revalidate();   
            }
        });
    }
    
    public static void main(String[] args) {
        RevalidateExample re = new RevalidateExample();
        re.setVisible(true);
    }
}