如何在圆形JButton周围绘制虚线?

时间:2020-11-06 16:10:05

标签: java swing

我在这里有几个JButton,我想用虚线框围住每个按钮的周长。然而。我不知道该怎么做。 BorderFactory.createDashedBorder()已解决了有关堆栈溢出的类似问题,但在我看来,这会产生一个方形的边界。

enter image description here

这是我当前如何实现按钮的代码。另外,我对Swing还是很陌生,因此如果解决方案尽可能简单,我将不胜感激

public class ColorButton extends JButton {
    private Color color;

    public ColorButton(Color color) {
        super();
        this.color = color;
        setOpaque(false);
        setFocusable(false);
        setContentAreaFilled(false);
        setBorderPainted(false);
        setPreferredSize(new Dimension(45, 45));
    }

    public void paintComponent(Graphics g) {
        int diameter = Math.min(getWidth(), getHeight());
        g.setColor(color);
        g.fillOval(getWidth() / 2 - diameter / 2, getHeight() / 2 - diameter / 2, diameter, diameter);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用BasicStroke绘制椭圆形。

类似的东西:

Graphics2D g2d = (Graphics2D)g.create();
g2d.setStroke(new BasicStroke(2, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 0, new float[] { 5 }, 0));
g2d.setColor(...);
g.drawOval(getWidth() / 2 - diameter / 2, getHeight() / 2 - diameter / 2, diameter, diameter);