论坛首页 移动开发技术论坛

自定义外观的Button

浏览 4846 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-10-17  
派生自
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()

   发表时间:2008-10-17  
发错了吧,这是SWING的内容啊,
0 请登录后投票
   发表时间:2008-10-19  
没有发错。CDC也有这样的东西
0 请登录后投票
   发表时间:2008-10-19  
现在CDC的手机几乎没有吧,大部份都是CLDC哦
0 请登录后投票
   发表时间:2008-10-20  
java.lang.Object 写道

现在CDC的手机几乎没有吧,大部份都是CLDC哦

Sun 出了一个CDC Toolkit 1.0,有兴趣可以了解下,
不过我还是喜欢Anroid
0 请登录后投票
   发表时间:2009-05-23  
cdc里面哪里有swing,只有awt啊
0 请登录后投票
   发表时间:2009-06-19  
S60 支持 eswt ,都没看到 什么人用过。

se 有一款 真机支持cdc。忘记了型号了。

其实 这些 mvc 啊什么的。我之前听说过,不了解。后来自己写代码,反复修改修改,觉得结构比较好了。再后来,看mvc的书,发现,这东西的结构怎么跟我写的差不多。。。。

说这个主要是想说,常常把以前的老代码拿来回炉,也是提高的一种方法。
0 请登录后投票
论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics