Java中Swing画圆角边框设置粗细问题

Swing自定义圆角边框设置粗细

Swing做界面需要用圆角边框,且继承Border的设置颜色、粗细功能

下面是一段网上搜索的代码:
(网页链接:Java中Swing绘制只有一个圆角的边框

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import javax.swing.border.LineBorder;
public class MyLineBorder extends LineBorder{
	
	public MyLineBorder(Color color, int thickness, boolean roundedCorners) {
		super(color, thickness, roundedCorners);
	}
	 public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
		 
		 RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING,
				                                RenderingHints.VALUE_ANTIALIAS_ON); 
	     Color oldColor = g.getColor();
	     Graphics2D g2 = (Graphics2D)g;
	     int i;
	     g2.setRenderingHints(rh);
	     g2.setColor(lineColor);
	     for(i = 0; i < thickness; i++)  {
		 if(roundedCorners)
	             g2.drawRoundRect(x, y, width, height, 5, 5); 
		 else
	             g2.drawRect(x, y, width, height);//实际中此循环语句需要修改
	     }
	     g2.setColor(oldColor);
	}
}

应用之后效果为:
在这里插入图片描述

发现无论怎么改thickness的参数都无法改变粗细。

原因是该代码在实现画线的粗细时,是循环画线,但是在同一位置画线,只能是覆盖上一层的线,并不能改变线条的粗细。

在Graghics中改变画线粗细是调用setStroke方法。
所以修改代码为:

 if (roundedCorners) {
                g2.setStroke(new BasicStroke(thickness));
                g2.drawRoundRect(x, y, width, height, 20, 20);
            }

在这里插入图片描述

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值