我需要制作一个带有圆形按钮的 JFrame ,并使用圆形图像作为按钮的图标(任何事情都可以,但面具对我来说会更容易)。
到目前为止,我已经搜索了这些东西,但我找到了一个圆形的JButton,但是有文字()而不是图像。我(用于屏蔽)已经看到Making a round button by Java Examples但不知道如何将其实现到按钮请帮助
答案 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;
}
}