FileDocCategorySizeDatePackage
BlurJButton.javaAPI DocExample1380Mon Jan 09 11:01:58 GMT 2006None

BlurJButton.java

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

public class BlurJButton extends JButton {

    public BlurJButton(String text) {
        super(text);
    }
    
    public void paintComponent(Graphics g) {
        if(isEnabled()) {
            super.paintComponent(g);
            return;
        }
        
        float[] my_kernel = {
            0.10f, 0.10f, 0.10f,
            0.10f, 0.20f, 0.10f,
            0.10f, 0.10f, 0.10f };
        ConvolveOp op = new ConvolveOp(new Kernel(3,3, my_kernel));
        BufferedImage buf = new BufferedImage(getWidth(),getHeight(),
            BufferedImage.TYPE_INT_RGB);
        super.paintComponent(buf.getGraphics());
        Image img = op.filter(buf,null);
        g.drawImage(img,0,0,null);
        
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("Blurred Button Hack");
        final JButton button = new BlurJButton("A Blurred Button");
        JButton control = new JButton("Switch");
        control.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent evt) {
                button.setEnabled(!button.isEnabled());
            }
        });
        
        frame.getContentPane().add(button);
        frame.getContentPane().add("South",control);
        frame.pack();
        frame.show();
    }
}