swing自定义弧形边框 CurvedBorder

原创 2013年12月03日 23:57:06
目录:

java代码:

package cn.cun.border;
import java.awt.Color;
import java.awt.Component;
import java.awt.Graphics;
import java.awt.Insets;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSlider;
import javax.swing.border.AbstractBorder;

public class CurvedExample extends JPanel {

  public CurvedExample() {
    super(true);

    JSlider mySlider = new JSlider();
    mySlider.setMajorTickSpacing(20);
    mySlider.setMinorTickSpacing(10);
    mySlider.setPaintTicks(true);
    mySlider.setPaintLabels(true);

    CurvedBorder border = new CurvedBorder(10, Color.RED);
    
    mySlider.setBorder(border);

    add(mySlider);
  }

  public static void main(String s[]) {
    JFrame frame = new JFrame("Custom Curved Border");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(300, 150);
    frame.setContentPane(new CurvedExample());
    frame.setVisible(true);
  }
}
class CurvedBorder extends AbstractBorder {
  private Color wallColor = Color.gray;

  private int sinkLevel = 10;

  public CurvedBorder() {
  }

  public CurvedBorder(int sinkLevel) {
    this.sinkLevel = sinkLevel;
  }

  public CurvedBorder(Color wall) {
    this.wallColor = wall;
  }

  public CurvedBorder(int sinkLevel, Color wall) {
    this.sinkLevel = sinkLevel;
    this.wallColor = wall;
  }

  public void paintBorder(Component c, Graphics g, int x, int y, int w, int h) {
    g.setColor(getWallColor());

    //  Paint a tall wall around the component
    for (int i = 0; i < sinkLevel; i++) {
      g.drawRoundRect(x + i, y + i, w - i - 1, h - i - 1, sinkLevel - i,
          sinkLevel);
      g.drawRoundRect(x + i, y + i, w - i - 1, h - i - 1, sinkLevel,
          sinkLevel-i);
      g.drawRoundRect(x + i, y, w - i - 1, h - 1, sinkLevel - i,
          sinkLevel);
      g.drawRoundRect(x, y + i, w - 1, h - i - 1, sinkLevel, sinkLevel
          - i);
    }
  }

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

  public Insets getBorderInsets(Component c, Insets i) {
    i.left = i.right = i.bottom = i.top = sinkLevel;
    return i;
  }

  public boolean isBorderOpaque() {
    return true;
  }

  public int getSinkLevel() {
    return sinkLevel;
  }

  public Color getWallColor() {
    return wallColor;
  }
}

效果图:

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

如何给Swing里组件自定义边框

 其实很简单,只要从一个Border类中继承,然后重写其paintBorder方法就好了。像下面的代码所产生的就是一个三面有线一面没线的边框。class MyBorder extends LineBo...
  • zcsunt
  • zcsunt
  • 2007年07月25日 12:19
  • 989

swing创建自定义窗体界面

转自:http://blog.csdn.net/a600423444/article/details/6737617 创建自定义外观的窗体,主要先了解以下步骤: ...
  • ltx06
  • ltx06
  • 2014年06月06日 23:36
  • 695

Java中Swing绘制只有一个圆角的边框

最近又开始学习Java的Swing,感觉在mo
  • tokimemo
  • tokimemo
  • 2014年06月23日 13:47
  • 2441

shape的基本功能,画椭圆,圆弧,边框,渐变色

一个shape的使用功能介绍,不全!
  • m0_37455103
  • m0_37455103
  • 2017年03月08日 22:11
  • 115

div边框弧形设计,radius的用法,CSS3 border-radius 属性

CSS3 border-radius 属性 向 div 元素添加圆角边框: 代码: div {    border-radius:5px; } 弧度可根据实际情况进行调整,个人认为5px较为合适 ...
  • z437955114
  • z437955114
  • 2015年06月14日 15:26
  • 2526

swing带标题的边框

import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.G...
  • datangxiajun
  • datangxiajun
  • 2016年11月23日 20:57
  • 913

Swing 投影边框

很久之前发在百度Java吧,很快被洪水淹没…… http://tieba.baidu.com/p/1977309130 最近想起来要用,稍微整理了一下发在这里算个存档吧。 ...
  • raistlic
  • raistlic
  • 2014年01月10日 06:39
  • 1610

Swing简单边框(Border)设置

最近重温了下Swing ,写个Border记录下,Border在Swing界面美化这块比较好用,界面的美化还真离不开Border。 快速开发简单Border 步骤: 1、创建Component设置Bo...
  • u012458817
  • u012458817
  • 2013年11月27日 00:28
  • 7127

【CSS】CSS画矩形、圆、半圆、弧形、半圆、小三角、疑问框

在网页中,经常会用到各种Icon,如果老师麻烦设计狮画出来不免有些不好意思,所以有时候我们也可以用CSS写出各种简单的形状,一来可以减轻他们的负担,二来也可以使用CSS替代图片,提高加载速度。 在网页...
  • LZGS_4
  • LZGS_4
  • 2015年07月10日 10:50
  • 13216

50个Android开发技巧(12 为控件添加圆角边框)

控件的圆角边框可以使你的App看起来更美观,其实实现起来也很简单。 以创建一个灰色的带圆角边框的Button为例: 一、创建一个ShapeDrawable作为背景 在drawable目录下创建一...
  • fwy19930618
  • fwy19930618
  • 2014年04月25日 11:46
  • 5507
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:swing自定义弧形边框 CurvedBorder
举报原因:
原因补充:

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