我只需要在组件的一侧创建一个圆形边框.
此代码创建一个圆角边框:
new LineBorder(Color.RED, 3, true)
Run Code Online (Sandbox Code Playgroud)
我已经看过这个线程,它告诉你如何创建一个可以仅在组件的一侧使用的遮罩边框,但是遮罩边框不会被舍入.
是否可以在一侧只有圆形边框?
编辑:
我试过使用这样的复合边框:
cell.setBorder(BorderFactory.createCompoundBorder(
new LineBorder(borderColor, 3, true),
BorderFactory.createMatteBorder(0, 3, 0, 0, Color.black)));
Run Code Online (Sandbox Code Playgroud)
但它不起作用......
您可以覆盖LineBorder的方法并从LineBorder的源中提取您需要的所有内容
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
Color oldColor = g.getColor();
int i;
/// PENDING(klobad) How/should do we support Roundtangles?
g.setColor(lineColor);
for(i = 0; i < thickness; i++) {
if(!roundedCorners)
g.drawRect(x+i, y+i, width-i-i-1, height-i-i-1);
else
SET CLIP HERE TO DRAW ONLY NECESSARY PART
g.drawRoundRect(x+i, y+i, width-i-i-1, height-i-i-1, thickness, thickness);
}
g.setColor(oldColor);
}
Run Code Online (Sandbox Code Playgroud)
LineBorder只支持圆角或不圆角。复合边框(如 JavaDoc 所述)使用一个外部边框和一个内部边框,因此不区分左/右或上/下。
恐怕您要么必须编写自己的Border实现,要么寻找其他人(外部库)已经制作的实现。
| 归档时间: |
|
| 查看次数: |
4171 次 |
| 最近记录: |