awt组件的swing实现

Swing为除Canvas之外的所有AWT组件提供了相应的实现,Swing组件比AWT组件的功能更加强大。相对于AWT组件,Swing组件具有如下4个额外的功能:

1.可以为Swing组件设置提示信息。使用setToolTipText()方法,为组件设置对用户有帮助的提示信息

2.很多Swing组件如按钮、标签、菜单项等,除使用文字外,还可以使用图标修饰自己。为了允许在Swing组件中使用图标,Swing为Icon接口提供了一个实现类:Imagelcon,该实现类代表一个图像图标

3.支持插拔式的外观风格。每个JComponent对象都有一个相应的ComponentUI对象,为它完成所有的绘画、事件处理、决定尺寸大小等工作ComponentUI对象依赖当前使用的PLAF,使用UIManager.setLookAndFeel()方法可以改变图形界面的外观风格

4.支持设置边框。Swing组件可以设置一个或多个边框。 Swing中提供了各式各样的边框供用户边用,也能建立组合边框或自己设计边框。一种空白边框可以用于增大组件,同时协助布局管理器对容器中的组件进行合理的布局

 

每个Swing组件都有一个对应的UI类,例如JButton组件就有一个对应的ButtonUI类来作为UI代理。每个Swing组件的UI代理的类名总是将该Swing组件类名的去掉,然后在后面添加UI后缀。UI代理类通常是一个抽象基类,不同的PLAF会有不同的UI代理实现类。Swing类库中包含了几套UI代理,分别放在不同的包下,每套UI代理都几乎包含了所有Swing组件的ComponentUI实现,每套这样的实现都被称为一种PLAF实现

 

UI类如下:

1、ComponentUI有一个子类ButtonUI。ComponentUI在javax.swing.plaf包下

2、ButtonUI有一个子类BasicButtonUI。ButtonUI在javax.swing.plaf包下

3、BasicButtonUI有两个子类MenultemUI、BasicButtonUI。BasicButtonUI在javax.swing.plaf.basic包下 MenultemUI在javax.swing.plaf包下 BasicButtonUI在javax.swing.plaf.basic包下

4、BasicButtonUI还有三个子类MotifButtonUI、MetalButtonUI、WindowsButtonUI。 MotifButtonUI在com.sun.java.swing.plaf.motif包下 MetalButtonUI在javax.swing.plaf.metal包下 WindowsButtonUI在com.sun.java.swing.plaf.windows包下

 

如果需要改变程序的外观风格, 则可以使用如下代码: