我们可以使用圆形图像作为按钮图标制作圆形JButton吗?

时间:2017-12-27 08:10:14

标签: java swing

我需要制作一个带有圆形按钮的 JFrame ,并使用圆形图像作为按钮的图标(任何事情都可以,但面具对我来说会更容易)。

到目前为止,我已经搜索了这些东西,但我找到了一个圆形的JButton,但是有文字(enter image description here)而不是图像。我(用于屏蔽)已经看到Making a round button by Java Examples但不知道如何将其实现到按钮请帮助

2 个答案:

答案 0 :(得分:0)

更改RoundButton类的paintComponent(g)方法,如下所示。

protected void paintComponent(Graphics g) {
    g.setClip(new Ellipse2D.Double(0, 0, getWidth(), getHeight()));  // set the area that shall be painted
    g.drawImage(bim, 0, 0, getWidth(), getHeight(), null);    // draw the image, if available
    if (getModel().isArmed()) {      // show a slight gray shading when pressing the button
        g.setColor(new Color(127, 127, 127, 80));   // gray with 80 as alpha
        g.fillOval(0, 0, getSize().width - 1, getSize().height - 1);
    }
    super.paintComponent(g);
}

此外,定义全局变量private BufferedImage bim并使用此方法设置它:

public void setButtonImage(BufferedImage pbim) {
    bim = pbim;
    repaint();
}

这应该可以满足您的需求。像这样你有一个带文字和图像的圆形按钮。

答案 1 :(得分:0)

前段时间,我编写了一个OvalButton类,可以处理椭圆形,圆形和类似胶囊的形状的JButton。

在您的情况下,扩展OvalButton类并重写getBackgroundImage()方法以返回要设置为背景的图像。然后像往常一样添加侦听器和文本。只需单击椭圆/圆形区域即可触发操作。

满足您需要的按钮类示例:

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;

public class ImageButton extends OvalButton {

    private BufferedImage image;

    public ImageButton() {
        super(); // Default is oval/circle shape.

        setBorderThickness(0); // Oval buttons have some border by default.

        try {
            image = ImageIO.read(new File("your_image.jpg")); // Replace with the path to your image.
        } 
        catch (IOException e) {
            e.printStackTrace();
            image = null;
        }
    }

    @Override
    protected BufferedImage getBackgroundImage() {
        return image;
    }
}