John Smith
John Smith

Reputation: 241

Removing borders on custom buttons

I've written this small program which attempts to create a custom JButton unfortunately I can't manage to remove the border. I thought button.setBorder(null); would remove it but this has been ineffective. Does anyone know how to remove the border from the button so it's just the icon? Any help greatly appreciated.

My code is as follows:

package custombuttons;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CustomButtons {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        CustomButtons h = new CustomButtons();
        h.setUp();
    }

    JFrame frame;
    JPanel panel;
    JButton button;
    BufferedImage b;
    String toolTip = "Configure";

    public void setUp() {
        frame = new JFrame("Custom Buttons");
        try {
            b = ImageIO.read(CustomButtons.class.getResource("/images/config.png"));
        } catch (IOException ex) {
            Logger.getLogger(CustomButtons.class.getName()).log(Level.SEVERE, null, ex);
            ex.printStackTrace();
        }

        Image b1 = (Image) b;
        ImageIcon iconRollover = new ImageIcon(b1);
        int w = iconRollover.getIconWidth();
        int h = iconRollover.getIconHeight();
        GraphicsConfiguration gc = frame.getGraphicsConfiguration();
        Image image = gc.createCompatibleImage(w, h, Transparency.TRANSLUCENT);
        Graphics2D g = (Graphics2D) image.getGraphics();
        g.drawImage(iconRollover.getImage(), 0, 0, null);
        g.dispose();

        ImageIcon iconDefault = new ImageIcon(b1);
        image = gc.createCompatibleImage(w, h, Transparency.TRANSLUCENT);
        g = (Graphics2D) image.getGraphics();
        g.drawImage(iconRollover.getImage(), 2, 2, null);
        g.dispose();
        ImageIcon iconPressed = new ImageIcon(b1);

        JButton button = new JButton();
        button.setIgnoreRepaint(true);
        button.setFocusable(false);
        button.setToolTipText(toolTip);
        button.setBorder(null);
        button.setContentAreaFilled(false);
        button.setIcon(iconDefault);
        button.setRolloverIcon(iconRollover);
        button.setPressedIcon(iconPressed);

        frame.setSize(500, 500);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new FlowLayout(FlowLayout.LEFT));

        panel = new JPanel();
        panel.setOpaque(false);
        panel.add(button);
        frame.getContentPane().add(panel);
        frame.setVisible(true);
    }
}

Upvotes: 1

Views: 3857

Answers (2)

shareef
shareef

Reputation: 9581

actually i tested your code on my Netbeans IDE and got no borders as you desire using only button.setBorder(null); or button.setBorderPainted(false); or both of them but i think you should make sure that your original image is really do not have any borders it self

Upvotes: 0

mKorbel
mKorbel

Reputation: 109813

have look at button.setBorderPainted(false) more about JButton here

Upvotes: 3

Related Questions