自定义border (Oval Border)

原创 2013年12月04日 23:43:04

目录:

java代码:

import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Insets;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;

public class OvalBorder implements Border {
  protected int ovalWidth = 6;
  protected int ovalHeight = 6;
  protected Color lightColor = Color.white;
  protected Color darkColor = Color.gray;

  public OvalBorder() {
    ovalWidth = 6;
    ovalHeight = 6;
  }

  public OvalBorder(int w, int h) {
    ovalWidth = w;
    ovalHeight = h;
  }

  public OvalBorder(int w, int h, Color topColor, Color bottomColor) {
    ovalWidth = w;
    ovalHeight = h;
    lightColor = topColor;
    darkColor = bottomColor;
  }

  public Insets getBorderInsets(Component c) {
    return new Insets(ovalHeight, ovalWidth, ovalHeight, ovalWidth);
  }

  public boolean isBorderOpaque() {
    return true;
  }

  public void paintBorder(Component c, Graphics g, int x, int y, int width,
      int height) {
    width--;
    height--;

    g.setColor(lightColor);
    g.drawLine(x, y + height - ovalHeight, x, y + ovalHeight);
    g.drawArc(x, y, 2 * ovalWidth, 2 * ovalHeight, 180, -90);
    g.drawLine(x + ovalWidth, y, x + width - ovalWidth, y);
    g.drawArc(x + width - 2 * ovalWidth, y, 2 * ovalWidth, 2 * ovalHeight,
        90, -90);

    g.setColor(darkColor);
    g.drawLine(x + width, y + ovalHeight, x + width, y + height
        - ovalHeight);
    g.drawArc(x + width - 2 * ovalWidth, y + height - 2 * ovalHeight,
        2 * ovalWidth, 2 * ovalHeight, 0, -90);
    g
        .drawLine(x + ovalWidth, y + height, x + width - ovalWidth, y
            + height);
    g.drawArc(x, y + height - 2 * ovalHeight, 2 * ovalWidth,
        2 * ovalHeight, -90, -90);
  }

  public static void main(String[] s) {
    JFrame f = new JFrame("Oval Border");
    f.setSize(100, 100);

    JPanel p = new JPanel(new GridLayout(0, 1, 5, 5));
    JLabel l = new JLabel("Oval Border");

    l.setBorder(new OvalBorder());

    p.add(l);
    p.setBorder(new OvalBorder());

    f.getContentPane().add(p);
    f.show();
  }
}
效果图:


                ||==========》  《===疑问===》《=========||

CSS border 属性及用border画各种图形

CSS border 属性 定义和用法 border 简写属性在一个声明设置所有的边框属性。 可以按顺序设置如下属性: border-widthborder-styleborder-c...
  • ssisse
  • ssisse
  • 2016年08月28日 10:58
  • 2490

#436 – 给Border加上立体阴影(Using a Drop Shadow with a Border)

如果你为一个Border指定一个DropShadowEffect ,那么所有Border 里面的子元素都会获得立体阴影。 ...
  • Libby1984
  • Libby1984
  • 2016年11月25日 10:08
  • 467

border:0;和border:none;的区别

感觉它和display:none;与visibility:hidden;的关系类似;   而对于border属性的渲染性能对比暂时没找测试的方法,虽然认为他们存在渲染性能上的差异但也只能说是理论上...
  • hardgirls
  • hardgirls
  • 2016年06月25日 10:13
  • 1867

border:none与border:0的区别

border:none与border:0的区别主要有两点:(1)性能上的差异。(2)浏览器兼容差异。...
  • u010200222
  • u010200222
  • 2015年05月10日 17:37
  • 639

CSS中设置border属性为0与none的区别

在我们设置CSS的时候,对标签元素不设置边框属性或者取消边框属性一般设置为:border:none;或border:0;两种方法均可。 border:none;与border:0;的区别体现有两点:...
  • qq_37787456
  • qq_37787456
  • 2017年05月12日 08:18
  • 2531

border最小宽度限制1px

今天准备用标签来实现分割线, 其原始css如下: border-right:0.01rem solid #fff; width:0; height:0.2rem; display:inline-blo...
  • SYYling
  • SYYling
  • 2015年11月24日 21:48
  • 1955

jquery 设置border消失

jquery设置样式用的css方法。css方法有很
  • a1091352041
  • a1091352041
  • 2014年11月08日 16:31
  • 3928

margin和border简写的顺序

margin、borde和paddingr简写的顺序 盒子弧度:border-radius
  • qq_37768482
  • qq_37768482
  • 2017年04月18日 20:52
  • 894

css中的 margin | padding | border 属性图释

这篇文章是转载的,对于理解css中的margin/padding/border这些概念很有帮助CSS 中有个重要的概念,就是盒子模式 (Box model)。胡戈的"一个馒头引发的血案"中有个圆圈套圆...
  • faintling
  • faintling
  • 2007年11月11日 17:40
  • 5087

TR使用css的border不显示问题

之前是: table width="99%" border="0" cellspacing="0" cellpadding="0">  tr style="border:1px solid...
  • dodott
  • dodott
  • 2016年08月02日 17:39
  • 1180
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自定义border (Oval Border)
举报原因:
原因补充:

(最多只允许输入30个字)