自定义外观的Button
来源:互联网 发布:idmss lite监控软件 编辑:程序博客网 时间:2024/04/29 16:27
派生自BasicButtonUI的类可以改变按钮的外观,定位于javax.swing.plaf.metal的MetalButtonUI类,控制metal视感下Button的外观
JButton b = new JButton();
b.setUI(new MyUI);
2.派生自javax.swing.plaf.basic.BasicBorders.ButtonBorder的类可以改变按钮的边框绘制,metal视感下JButton边框由javax.swing.plaf.metal.MetalBorders.ButtonBorder绘制
b.setBorder();
★ 必须先setUI再setBorder
● JButton的结构
MVC模式设计
Model:ButtonModel
View :BasicButtonUI (根据不同的视感,再有不同的子类,如MetalButtonUI)
以及javax.swing.plaf.metal.MetalBorders.ButtonBorder
,控制边框的绘制
MetalButtonUI的update方法控制了按钮初始时的绘制(MetalUtils.drawGradient(c, g, "Button.gradient", 0, 0, c.getWidth(), c.getHeight(), true)),因此,即使重写paint()方法,初始按钮仍然会被绘制。
Controller:JButton (一般使用AbstractButton,各种Button的父类)
● about MetalUtils, Metal utility tools.
定位于javax.swing.plaf.metal.MetalUtils提供了大量Metal视感下的辅助方法(按钮初始化的Gradient样式就是通过它的drawGradient方法绘制的)。并提供了三个inner class 进行视感处理。
GradientPainter
OceanDisabledButtonImageFilter
OceanToolBarImageFilter
★ MetalUtils不是public class,因此无法从外部包访问其
● 关于MetalButtonUI的update方法及JButton的初始绘制
MetalButtonUI.update() 负责绘制按钮的初始样式(调用MetalUtils.drawGradient()方法绘制)。然后调用paint()方法绘制其他效果(pressed, focus, text)。最后调用super.update()。
Super.update()传递给BasicButtonUI,由于BasicButtonUI没有overload update方法,因此传递给javax.swing.plaf.ButtonUI。
ButtonUI 是一个abstract class, 因此update方法继续传递给javax.swing.plaf.ComponentUI。
ComponentUI的update方法只是简单的fillRect组件,然后调用paint()。
- 自定义外观的Button
- android笔记 自定义textview,button等控件的外观,点击效果
- 自定义FileDialog的外观
- 自定义外观的ListView
- 自定义SeekBar的外观
- 如何更改页面button的外观?
- 自定义水晶报表的外观
- 可自定义外观的QuickReport?
- 自定义水晶报表的外观
- 自定义水晶报表的外观
- 自定义水晶报表的外观
- AIR 自定义窗口的外观
- 自定义的button
- 自定义的Button片段
- C#的自定义button
- 自定义图文并茂的Button
- 自定义button的样式
- Qt自定义外观--自定义标题栏的窗口
- 高焕堂android中文书全,电子文件for version 1.0
- 用Ant 来编译打包您的Anroid应用程序。
- J2ME预编译器 - Antenna入门
- MapView的使用 之 最新帖
- 使用BroadcastReceiver实现开机启动Service或Activity
- 自定义外观的Button
- 使用Kjava GUI组件的开发
- G1的又一新的模拟器
- Android 设计一个可单选,多选的Demo
- TestGrid Adnroid
- 继承Activity类应该注意的问题
- Android OS的扩展库支持
- Creating a ContextMenu on a ListView
- PPC/SP 平台UCWEB6.2 Beta1版发布啦(2008.09.27)