code: package UI;
  
  
  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();
  //  }
  }