我在这里有几个JButton,我想用虚线框围住每个按钮的周长。然而。我不知道该怎么做。 BorderFactory.createDashedBorder()已解决了有关堆栈溢出的类似问题,但在我看来,这会产生一个方形的边界。
这是我当前如何实现按钮的代码。另外,我对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);
}
}
答案 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);