Swinghacks——自定义边框
来源:互联网 发布:网络乞丐 编辑:程序博客网 时间:2024/06/06 06:12
自定义边框用到的情况也比较少(如果只是为了美观的话)
如下图,把刻度做到边框上是个不错的选择
当然如果真的为了美观,那看看下面的图片:
这又让我想起做web时用div布局,宽度自增长时那css写的真是累,ui ux什么的是很花时间和心思,哎,不过swing就算了,不美观而且设计的非常复杂。个人还是比较支持原生态swt,但是如果真决定用swt写一个产品的话,那其实可以考虑不用java了。要原生态效果,语言选择就多了。
跑题了,回到边框。原理基本上就是画,上下左右 加上 4个角,共8个边框需要画。所以画边框的时候,需要知道的信息就是,边框占据多大空间 和 组件的宽高
边框继承Border接口,此接口共3个方法:
1、获取边框宽度信息
Insets getBorderInsets(Component c);
这个方法返回边框占据的空间信息,分别是上下左右位置
public Insets(int top, int left, int bottom, int right)2、边框是否透明
boolean isBorderOpaque();
Opaque是不透明的意思,别搞混了此方法返回边框是否透明,注意
边框的空间是要算在组件的高宽中的,比如组件大小是100x100,边框是10,那么中间80x80的空间就是组件除去边框的空间
isBorderOpaque为true就是不透明,那么此时画边框的时候,就需要把中间80x80的空间也画上某种颜色,否则就是bug。你可以理解为,如果边框不透明,那么此时边框就不仅仅是周围的10,而是100x100。
3、绘制边框
void paintBorder(Component c, Graphics g, int x, int y, int width, int height);
这个方法没什么好说了,width height是组件的高宽,通过getBorderinsets(c)方法获取边框信息,然后就开始用Graphics慢慢画吧。话说swing单线程的调用操作系统底层的paint方法画界面真的让人感觉很蛋疼
如果想自定义边框,那extends AbstractBorder是不错的选择
- Swinghacks——自定义边框
- Swinghacks——用图片自定义按钮
- Swinghacks——动感JList
- Swinghacks——滚动控件的背景
- Swinghacks——JTabbedPane切换百页窗效果
- Swinghacks——按钮模糊效果
- Swinghacks——抗锯齿字体
- Swinghacks——抗锯齿字体2
- Swinghacks——抗锯齿字体3
- Swinghacks——获取系统图标
- Swinghacks——显示图片的2种常用方法
- Swinghacks——给文本控件添加图片背景
- Swinghacks——JTable根据内容调整列宽
- Swinghacks——JTable单击表头选中列
- Swinghacks——把提示窗口放到glass中
- Swinghacks——带搜索功能的JTextArea
- 【Swinghacks——JTable根据内容调整列宽】
- Swinghacks——JTable根据内容调整列宽
- 02_初级_Java之美[从菜鸟到高手演变]之字符串的处理
- 硬盘安装CentOS 6.0(图)
- 03_初级_Java之美[从菜鸟到高手演变]之类与对象(一)
- 提升Java性能的技巧
- 04_初级_Java之美[从菜鸟到高手演变]之类与对象(二)
- Swinghacks——自定义边框
- Android Wi-Fi Display(Miracast)介绍
- 迎接2013年
- Cassandra 使用Thrift API操作数据, 读写多行(range区间)多列(slice切片)数据
- ANDROID DisplayManager 服务解析一
- paip.获取当前实际北京时间API
- C#的virtual概念
- MySQL-访问权限与信息安全
- 五种常用排序